man*_*her 12 java virtual-machine docker
我有一个java应用程序(jar文件),我希望能够从docker镜像运行.
我创建了一个Dockerfile来创建一个使用centos作为基础的图像并安装java如下:
Dockerfile
FROM centos
RUN yum install -y java-1.7.0-openjdk
Run Code Online (Sandbox Code Playgroud)
我跑docker build -t me/java7了以获得图像me/java7
但是我陷入了一些死胡同.
java -jar当用户docker run使用参数运行时需要自动传递给命令中的jar文件的数字额外说明:
jar文件是本地文件.不通过wget或任何东西访问任何地方.我目前最接近的是包含它的Windows共享.我也可以从git存储库访问源代码,但这将涉及编译所有内容并在映像上安装maven和git,所以我宁愿避免这种情况.
任何帮助深表感谢.
小智 25
在Dockerfile中,使用ADD添加本地文件,例如
ADD your-local.jar /some-container-location
Run Code Online (Sandbox Code Playgroud)您可以使用卷在运行时将文件放入容器中,例如
VOLUME /copy-into-this-dir
Run Code Online (Sandbox Code Playgroud)
然后你继续使用
docker run -v=/location/of/file/locally:/copy-into-this-dir -t me/java7
Run Code Online (Sandbox Code Playgroud)
您可以使用ENTRYPOINT和CMD来传递参数,例如
ENTRYPOINT ["java", "-jar", "/whatever/your.jar"]
CMD [""]
Run Code Online (Sandbox Code Playgroud)
然后再次运行使用
docker run -v=/location/of/file/locally:/copy-into-this-dir -t me/java7 --myNumber 42
Run Code Online (Sandbox Code Playgroud)(看看Dockerfile文档.)
假设您的文件结构如下:
DockerTest
??? Dockerfile
??? local.jar
Run Code Online (Sandbox Code Playgroud)
Dockerfile 内容将是:
FROM centos
RUN yum install -y java-1.7.0-openjdk
EXPOSE 8080
ADD /local.jar fatJar.jar
ENTRYPOINT ["java","-jar","fatJar.jar"]
Run Code Online (Sandbox Code Playgroud)
使用以下命令:
$ cd DockerTest
$ docker build -f Dockerfile -t demo .
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25820 次 |
| 最近记录: |