如何重新启动一个新的弹簧引导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
。