如何为本地应用程序创builddocker镜像,并获取文件和值参数

我有一个Java应用程序(jar文件),我希望能够从一个泊坞窗图像运行。

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

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

我之后运行docker build -t me/java7来获取image / java7

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

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

额外的笔记:

jar文件是一个本地文件。 没有托pipe任何地方通过wget或任何地方访问。 我目前最接近的是一个包含它的窗口份额。 我也可以从git仓库访问源代码,但是这将涉及到编译所有东西,并在映像上安装maven和git,所以我宁愿避免这样做。

任何帮助深表感谢。

  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文档 。)

假设你的文件结构如下

 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 .