我有一个spring-boot项目,我想自动在容器中重新部署我的jar。 怎么做正确? 到目前为止,我所看到的只是这样。这是正确的方法吗?
# cd /home/jdev;
# sudo docker stop ca_spring_boot;
# sudo docker rm ca_spring_boot;
# sudo docker rmi ca_app_image;
# sudo docker build -t ca_app_image .;
# sudo docker run -d -p 8888:8080 --name ca_spring_boot ca_app_image
我的Dockerfile
FROM java:8
VOLUME /tmp
EXPOSE 8080
ADD docker-storage/jenkins/workspace/CA/build/libs/ca-1.0.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=container","-jar","/app.jar"]
感谢。
答案 0 :(得分:6)
你可以装载一个卷并将你的app.jar放在那里。所以你不需要重建图像,只需重新启动容器即可。
Dockerfile
FROM java:8
ENTRYPOINT [ "sh", "-c", "java -jar /mnt/app.jar" ]
将app.jar放入/ docker / spring /
构建并运行:
docker build -t spring_test .
docker run -d -v /docker/spring/:/mnt -p 12384:8080 --name spring_test_running spring_test
如果您更新弹簧应用程序,您只需执行以下操作:
docker restart spring_test_running
答案 1 :(得分:1)
之前的答案很好。但是每次要测试代码时都需要重新启动容器。但我们可以避免这个问题。只需使用Spring dev tool 并按上述方式挂载目标目录。