如何使用新的spring-boot JAR重新启动容器而没有jar的绝对路径?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用新的spring-boot JAR重新启动容器而没有jar的绝对路径?相关的知识,希望对你有一定的参考价值。
请帮我解决我的问题。
随着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
谢谢您的帮助!
您应该将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
。
以上是关于如何使用新的spring-boot JAR重新启动容器而没有jar的绝对路径?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 应用程序 - 启动时间与“mvn spring-boot:run”和“java -jar”的差异
使用spring-boot开发,然后打包成jar,linux服务器,启动成功,端口号8081,但是访问报404错误