我有一个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
java -jar
时自动传递到docker run
命令中的jar文件的数字
醇>
额外说明:
jar文件是本地文件。不通过wget或任何东西访问任何地方。我目前最接近的是包含它的Windows共享。我也可以从git存储库访问源代码,但这将涉及编译所有内容并在映像上安装maven和git,所以我宁愿避免这种情况。
非常感谢任何帮助。
答案 0 :(得分:24)
在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 documentation。)
答案 1 :(得分:3)
假设您的文件结构如下:
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 .