如何重新启动一个新的弹簧引导JAR容器没有绝对path到jar子?

请帮我解决我的问题。

随着docker的升级,将jar添加到绝对path的容器不再有效。 如何使容器重新启动,新的jar子被拿起来了? 我做了一个新的jar,并重新启动容器,现在我不能这样做,因为不可能指定在Dockerfile中的新jar的绝对path?

这是我的Dockerfile更新到新版本的泊坞窗之前工作。 从他那里我创造了一个没有任何问题的图像。

FROM java:8 VOLUME /tmp EXPOSE 8888 ADD /home/jdev/docker-storage/jenkins/workspace/CA/build/libs/ca.jar /app.jar RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] 

现在我不能创build一个图像,因为我需要指定一个相对path。 重新启动后,新的镜像不会复制到Docker容器中。 Dockerfile在/ home / jdev中。

ADD docker-storage/jenkins/workspace/CA/build/libs/ca.jar /app.jar

谢谢您的帮助!

您应该将Docker容器视为不可变的容器。 当你使用这种方法时,你遇到的大部分问题都将消失。

这个设置最近给了我很好的帮助。 不知道你是否使用Maven。 这是一个基于Maven的解决scheme。

首先在你的项目的根目录下创build一个docker目录。

将这个Dockerfile添加到新目录(包括任何特定的configuration需要)

 FROM java:8u111-jdk-alpine COPY *.jar target/@project.artifactId@-@project.version@.jar CMD java -Xmx512m -jar target/@project.artifactId@-@project.version@.jar 

configurationMaven以使用新的Dockerfile目录和Dockerfile

将以下内容添加到pom.xml

  <resource> <directory>${project.basedir}/docker</directory> <filtering>true</filtering> <targetPath>..</targetPath> </resource> 

现在,当你打包项目时,你将在target文件夹中有一个正确的Dockerfile