请帮我解决问题。
随着docker的升级,将jar添加到具有绝对路径的容器不再有效。如何制作,在重新启动容器时,新罐子被拿起了? 我做了一个新的jar并重新启动了容器,现在我不能这样做因为在Dockerfile中指定新jar的绝对路径是不可能的吗?
这是我的Dockerfile在更新到新版本的docker之前有效。从他那里我创造了一个没有任何问题的图像。
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"]
现在我无法创建图像,因为我需要指定相对路径。重新启动后,新图像不会复制到Docker容器。 Dockerfile位于/ home / jdev。
ADD docker-storage/jenkins/workspace/CA/build/libs/ca.jar /app.jar
感谢您的帮助!
答案 0 :(得分:0)
您应该将Docker容器视为不可变容器。当您使用这种方法时,您遇到的大多数问题都会消失。
这个设置最近对我有好处。不确定您是否使用Maven。这是一个基于Maven的解决方案。
首先在项目的根目录中创建一个docker
目录。
将此Dockerfile
添加到新目录(包括所需的任何特定配置)
FROM java:8u111-jdk-alpine
COPY *.jar target/@project.artifactId@-@project.version@.jar
CMD java -Xmx512m -jar target/@project.artifactId@-@project.version@.jar
配置Maven以使用新的docker
目录和Dockerfile
将以下内容添加到pom.xml
<resource>
<directory>${project.basedir}/docker</directory>
<filtering>true</filtering>
<targetPath>..</targetPath>
</resource>
现在,在打包项目时,Dockerfile
文件夹中的target
正确无误。