如何使用新的spring-boot JAR重新启动容器而没有jar的绝对路径?

时间:2017-12-16 21:18:14

标签: java docker spring-boot jar dockerfile

请帮我解决问题。

随着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

感谢您的帮助!

1 个答案:

答案 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正确无误。