如何为本地应用程序创建 Docker 映像,获取文件和值参数

2022-09-04 06:32:21

我有一个java应用程序(jar文件),我希望能够从docker映像运行。

我创建了一个Dockerfile来创建一个使用centos作为基础的映像,并安装java:

Dockerfile
FROM centos
RUN yum install -y java-1.7.0-openjdk

我跑了之后,以获得图像我/ java7docker build -t me/java7

然而,我被困在一些死胡同里。

  1. 如何将 jar 文件从主机复制到映像/容器中
  2. 我需要2个参数。1 是一个文件,需要在运行时将其复制到容器的目录中。另一个是当用户使用参数运行时,需要自动传递到命令中的jar文件的数字。java -jardocker run

额外提示:

jar 文件是本地文件。没有托管在任何地方都可以通过wget或任何东西访问。目前我最接近的是包含它的窗口共享。我也可以从git存储库访问源代码,但这将涉及编译所有内容并在映像上安装maven和git,因此我宁愿避免这种情况。

任何帮助都非常感谢。


答案 1
  1. 在 Dockerfile 中,使用 ADD 添加本地文件,例如

    ADD your-local.jar /some-container-location
    
  2. 您可以使用卷在运行时将文件放在容器中,例如

    VOLUME /copy-into-this-dir
    

    然后你运行使用

    docker run -v=/location/of/file/locally:/copy-into-this-dir -t me/java7
    

    您可以使用 ENTRYPOINT 和 CMD 来传递参数,例如

    ENTRYPOINT ["java", "-jar", "/whatever/your.jar"]
    CMD [""]
    

    然后再次运行使用

    docker run -v=/location/of/file/locally:/copy-into-this-dir -t me/java7 --myNumber 42
    

(请查看 Dockerfile 文档


答案 2

假设您的文件结构如下

DockerTest
        └── Dockerfile
        └── local.jar

Dockerfile 内容将是

FROM centos
RUN yum install -y java-1.7.0-openjdk
EXPOSE 8080
ADD /local.jar fatJar.jar
ENTRYPOINT ["java","-jar","fatJar.jar"]

使用以下命令

$ cd DockerTest
$ docker build -f Dockerfile -t demo .

推荐