【问题标题】:How do I restart a container with a new spring-boot JAR without absolute path to jar?如何在没有 jar 绝对路径的情况下使用新的 spring-boot JAR 重新启动容器?
【发布时间】:2018-05-30 16:59:31
【问题描述】:

请帮我解决我的问题。

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

感谢您的帮助!

【问题讨论】:

    标签: java docker spring-boot jar dockerfile


    【解决方案1】:

    您应该将 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>
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      相关资源
      最近更新 更多