在Docker镜像中运行jar文件

lsmepo6l  于 12个月前  发布在  Docker
关注(0)|答案(3)|浏览(106)

我用java创建了一个Docker镜像,并将jar文件复制到镜像中。我的Dockerfile是:

FROM anapsix/alpine-java
MAINTAINER myNAME 
COPY testprj-1.0-SNAPSHOT.jar /home/testprj-1.0-SNAPSHOT.jar
RUN java -jar /home/testprj-1.0-SNAPSHOT.j

字符串
执行以下命令后:

docker build -t imageName.


在控制台中,我看到了应用程序的输出,一切正常。但是当我停止图像时,我不知道如何再次运行图像?当我执行以下命令时:

docker run -i -t imageName java -jar /home/testprj-1.0-SNAPSHOT.jar


应用程序再次运行,但在我的Dockerfile中我已经写了这个命令。我如何在没有这个命令的情况下运行镜像并让应用程序自动运行?

c0vxltue

c0vxltue1#

图像和容器之间存在差异。

  • 映像将构建一次
  • 您可以从图像启动容器

在您的案例中:
更改您的图像:

FROM anapsix/alpine-java
MAINTAINER myNAME 
COPY testprj-1.0-SNAPSHOT.jar /home/testprj-1.0-SNAPSHOT.jar
CMD ["java","-jar","/home/testprj-1.0-SNAPSHOT.jar"]

字符串
建立您的形象:

docker build -t imageName .


现在,在容器中调用程序:

docker run --name myProgram imageName


现在,通过重新启动容器来重新启动程序:

docker restart myProgram


您的程序已更改?请重建映像!:

docker rmi imageName
docker build -t imageName .

mqxuamgl

mqxuamgl2#

这可能不完全是你问的,但是如果你 * 只是 * 需要运行一个容器(而不是只是一个更大的自定义容器的一部分),我喜欢这种将卷/文件夹Map到容器并使用标准上游映像运行它的方法:

docker run --rm -it -v /home/me/folderHoldingJar:/home:Z java:latest /bin/bash -c '/usr/bin/java -jar /home/theJarFile.jar'

字符串
如果需要显示GUI,甚至可以添加some additional args

2w3kk1z5

2w3kk1z53#

现在回答太晚了,但我更喜欢分享我的运行命令。

ENTRYPOINT [ "java","-jar", "jar-file-name.jar" ]

字符串

相关问题