我有一个 java 应用程序(jar 文件),我希望能够从 docker 镜像运行。
我已经创建了一个 Dockerfile 来创建一个使用 centos 作为基础的镜像并安装 java:
Dockerfile
FROM centos
RUN yum install -y java-1.7.0-openjdk
我运行 docker build -t me/java7
后得到镜像 me/java7
但是我陷入了一些死胡同。
- 如何将 jar 文件从主机复制到镜像/容器中
- 我需要 2 个参数。 1是一个文件,需要在运行时复制到一个目录到容器中。另一个是一个数字,当用户使用参数运行
docker run
时,需要在java -jar
命令中自动传递给jar文件
补充说明:
jar 文件是本地文件。不托管任何可通过 wget 或任何东西访问的地方。我目前最接近的是包含它的 Windows 共享。我也可以从 git 存储库访问源代码,但这将涉及编译所有内容并在镜像上安装 maven 和 git,所以我宁愿避免这样做。
非常感谢任何帮助。
最佳答案
在 Dockerfile 中,使用 ADD 添加一个本地文件,例如:g
ADD your-local.jar /some-container-location
您可以使用卷在运行时将文件放入容器中,例如 g
VOLUME /copy-into-this-dir
然后你运行使用
docker run -v=/location/of/file/locally:/copy-into-this-dir -t me/java7
您可以使用 ENTRYPOINT 和 CMD 来传递参数,例如 g
ENTRYPOINT ["java", "-jar", "/whatever/your.jar"] CMD [""]
然后再次运行使用
docker run -v=/location/of/file/locally:/copy-into-this-dir -t me/java7 --myNumber 42
(看看 Dockerfile documentation 。)
关于java - 如何为获取文件和值参数的本地应用程序创建 docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25364940/