查看: 58|回覆: 1

[云和虚拟化] docker部署springboot项目实践(更新无需重新build)

[複製鏈接]

2

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2008-12-27
發表於 2026-1-6 09:45:33 | 顯示全部樓層 |閲讀模式

一、问题

之前的文章记录过利用docker部署springboot项目,使用的方式是直接将jar一起打包,构建成一个新的镜像,再运行镜像的方式进行部署,然而这里有一种缺点,就是后面更新jar包,都需要删掉旧的镜像,重新build,再运行,为了解决这种问题,下面列了部署springboot项目的另一种姿势。

二、环境

以下是本人此次搭建的环境

  • 部署方式:docker
  • 服务器:linux服务器
  • 服务器操作系统:CentOS 7

三、部署jar包

先创建springboot项目,并且确保可以运行,下面简单写了一个接口

再将该项目进行maven打包生成一个jar,然后在linux服务器上面创建一个目录存放该jar包,如下图

然后在linux服务器上面创建一个目录,用于存放Dockerfile文件,如下图

Dockerfile里面的内容如下

FROM  java
EXPOSE 8001
ENTRYPOINT ["java","-Xmx256m","-Xms256m","-jar","/data/java/jar/springboot-docker-test.jar"]

注意:

这里的/data/java/jar/springboot-docker-test.jar路径是后续容器里面运行的jar包的路径,路径可以自己随便定义,后面我们会在宿主机上面把这个路径挂载出来即可

在Dockerfile路径下构建镜像

构建成功后,启动容器

docker run -d -p 8001:8001 --name test1 -it -v /root/data/docker_data/springboot-docker-test/jar:/data/java/jar  springboot-test

注:

(1)重点说明一下”-v /root/data/docker_data/springboot-docker-test/jar:/data/java/jar“这个命令,/root/data/docker_data/springboot-docker-test/jar这个路径是我们把打包的jar上传到linux服务器上面的路径,/data/java/jar这个路径是Dockerfile文件里面执行命令的路径(ENTRYPOINT),意思就是把宿主机的jar路径挂载进容器里面去,这样启动的时候用的jar包就是宿主机的jar包,后续更新jar的时候,只要替换宿主机的jar即可,之后容器重新启动就实现了更新

启动后访问路径

四、更新jar包

例如在原来的代码上,又新加了个接口

然后重新maven打包,再把jar替换掉服务器上面的jar即可,记得jar名称得保持一致

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持琼殿技术社区。

回覆

使用道具 舉報

0

主題

720

回帖

4441

積分

琼殿精英

金币
3721
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 2026-5-9 17:52:44 | 顯示全部樓層
看到前辈分享的这个docker部署SpringBoot项目的教程,真的很实用!之前我部署项目的时候也是每次更新都要重新build镜像,特别麻烦,尤其是项目比较大的情况下构建一次要等很久。

学到的一个关键点:
使用-v参数挂载宿主机目录到容器内这个思路真的很巧妙,这样只需要保持jar包名称不变,直接替换文件就能实现热更新,完全不需要重新构建镜像,省时又省力!

想补充几点:


  • 数据持久化:除了jar包,如果项目有配置文件或者日志需要保留,也可以考虑挂载出来,这样更方便管理和维护。

  • 健康检查:可以在docker run的时候加上--restart=always参数,这样容器异常退出后会自动重启,生产环境会更稳定。

  • 多实例部署:如果需要部署多个实例,只需要修改容器名称和端口号即可,镜像不需要重新构建,复用性很强。

最后一个小建议:
如果是生产环境,建议配合docker-compose来管理容器,这样启动、停止、更新会更加方便,一条命令就能搞定所有操作。

总之非常感谢前辈的分享,这种不重新build就能更新的方式太香了![emoji=good]👍
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部