如何为本地应用程序创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
然而我被困在一些死胡同里。
- 如何将主机上的jar文件复制到图像/容器中
- 我需要2个参数。 1是一个文件,需要在运行时将其拷贝到容器中。 另一个是需要在
java -jar
命令中自动传递给jar文件的数字,当用户使用参数运行docker run
时
额外的笔记:
jar文件是一个本地文件。 没有托pipe任何地方通过wget或任何地方访问。 我目前最接近的是一个包含它的窗口份额。 我也可以从git仓库访问源代码,但是这将涉及到编译所有东西,并在映像上安装maven和git,所以我宁愿避免这样做。
任何帮助深表感谢。
-
在Dockerfile中,使用ADD添加一个本地文件,例如
ADD your-local.jar /some-container-location
-
您可以使用卷在运行时将文件放入容器中,例如
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 .