news 2026/5/16 4:13:51

基于JPom与Docker的SpringBoot项目自动化构建与部署实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于JPom与Docker的SpringBoot项目自动化构建与部署实战指南

1. 环境准备与工具安装

第一次接触JPom和Docker组合时,我也被各种配置搞得头大。后来发现只要把基础环境搭好,后面的自动化流程就像搭积木一样简单。咱们先从最基础的安装开始,我会把踩过的坑都告诉你。

1.1 Docker环境配置

建议直接用官方脚本安装Docker,省去很多麻烦。在Linux服务器上执行下面这条命令:

curl -fsSL https://get.docker.com | sh

装完后别急着用,记得配置镜像加速。我在阿里云上实测,没加速前拉镜像要10分钟,配置后只要30秒。修改/etc/docker/daemon.json文件(没有就新建):

{ "registry-mirrors": ["https://your-aliyun-mirror.mirror.aliyuncs.com"] }

重启服务生效:

systemctl restart docker

验证下是否正常:

docker run hello-world

如果看到欢迎信息说明Docker已经ready。这里有个小技巧:把当前用户加入docker组,就不用每次都sudo了:

sudo usermod -aG docker $USER

1.2 JPom的Docker安装

官方推荐用docker-compose部署JPom,确实比直接跑容器方便管理。先确保安装了docker-compose:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose

然后创建个目录存放配置,比如/opt/jpom,在里面新建docker-compose.yml:

version: '3' services: jpom-server: image: jpomdocker/jpom container_name: jpom-server ports: - "2122:2122" - "2123:2123" volumes: - /opt/jpom/server/data:/usr/local/jpom-server/data - /var/run/docker.sock:/var/run/docker.sock restart: always jpom-agent: image: jpomdocker/jpom container_name: jpom-agent ports: - "2124:2124" volumes: - /opt/jpom/agent/data:/usr/local/jpom-agent/data - /var/run/docker.sock:/var/run/docker.sock restart: always depends_on: - jpom-server

重点注意两个挂载卷:数据目录要保持持久化,docker.sock挂载是为了让容器内能操作宿主机Docker。启动命令很简单:

docker-compose up -d

等个一分钟,访问http://服务器IP:2122 就能看到登录页。默认账号admin/123456,记得第一时间改密码!

2. 项目基础配置

2.1 代码仓库对接

在JPom管理后台的"在线构建 > 仓库信息"里添加你的Git仓库。以GitHub为例:

  • 仓库地址填HTTPS格式的URL
  • 认证方式选账号密码或SSH密钥
  • 如果是私有仓库,记得提前在服务器上配置好git的凭证存储

测试连接时经常报错?多半是网络问题。建议在服务器上先手动git clone试试,确保能正常拉代码。有个小技巧:在JPom服务器上配置全局git代理:

git config --global http.proxy http://your-proxy:port

2.2 SSH资产配置

在"资产管理 > SSH管理"添加部署目标服务器。这里有个大坑:如果JPom和部署目标在同一台机器,host不能填127.0.0.1,得用真实IP!因为容器内访问宿主机用的网络命名空间不同。

推荐使用密钥认证更安全。先在目标服务器生成密钥对:

ssh-keygen -t rsa -b 4096

然后把公钥内容贴到JPom的SSH配置里。测试连接时如果超时,检查下目标服务器的sshd配置:

# 确保这行没被注释 PermitRootLogin prohibit-password # 确保有这行 PubkeyAuthentication yes

2.3 Docker资产配置

在"资产管理 > Docker管理"添加Docker连接。关键是要配置正确的API地址:

  • 如果JPom和Docker在同一主机:unix:///var/run/docker.sock
  • 如果是远程Docker:tcp://IP:2375(记得开放端口)

测试连接时报错?可能是权限问题。试试给docker.sock改权限:

sudo chmod 666 /var/run/docker.sock

不过生产环境建议用更安全的方式,比如创建docker用户组。

3. 构建流程详解

3.1 创建构建任务

在"在线构建"页面新建任务,关键配置项:

  1. 构建方式选"容器构建"(Docker方式必须选这个)
  2. 选择之前配好的代码仓库
  3. 分支填master或你的开发分支
  4. 产物目录填target/*.jar(SpringBoot默认输出位置)

特别注意:容器构建会把代码拉取到JPom的docker卷目录,路径类似/var/lib/docker/volumes/xxx。想查看具体位置可以用:

find / -name "BUILD_ID"

3.2 DSL配置技巧

这是最核心的部分,直接决定构建能否成功。分享我的一个实战配置:

runsOn: ubuntu-latest fromTag: test steps: - uses: java version: 11 - uses: maven version: 3.9.4 - uses: cache path: /root/.m2 type: global binds: - /root/.m2/:/root/.m2/ - /path/to/settings.xml:/root/.m2/settings.xml run: | cd ${JPOM_WORKING_DIR} mvn clean package -Dmaven.test.skip=true -s /root/.m2/settings.xml

几个关键点:

  1. uses: java会自动下载指定JDK,建议用LTS版本(如8/11/17)
  2. Maven缓存配置能大幅提升后续构建速度
  3. 绑定settings.xml可以配置国内镜像源
  4. ${JPOM_WORKING_DIR}是JPom自动映射的代码目录

3.3 构建优化实践

第一次构建可能会很慢,主要是下载依赖。几个提速技巧:

  1. 在settings.xml配置阿里云镜像:
<mirror> <id>aliyunmaven</id> <url>https://maven.aliyun.com/repository/public</url> <mirrorOf>*</mirrorOf> </mirror>
  1. 对于多模块项目,可以只构建需要的模块:
mvn clean package -pl module1 -am
  1. 大型项目可以分阶段构建,先单独执行mvn dependency:go-offline下载所有依赖

4. 自动化部署方案

4.1 发布配置

构建成功后,在"发布操作"选项卡配置:

  1. 选择目标SSH服务器
  2. 发布目录填如/home/your-project
  3. 发布前命令可以用来停止旧服务:
docker stop your-container || true
  1. 发布后命令示例:
cd /home/your-project docker-compose up -d

4.2 Docker化部署

建议用docker-compose管理服务。准备个简单的compose.yml:

version: '3' services: your-app: image: openjdk:11-jre ports: - "8080:8080" volumes: - ./your-app.jar:/app.jar command: java -jar /app.jar restart: always

对应的start.sh可以这样写:

#!/bin/bash docker-compose down docker-compose up -d

记得给脚本执行权限:

chmod +x start.sh

4.3 健康检查配置

在JPom的"项目管理"里可以配置健康检查路径,比如SpringBoot的actuator健康端点:

http://localhost:8080/actuator/health

设置合理的超时时间(建议30秒以上),JPom会根据返回状态判断部署是否成功。

5. 进阶技巧与排错

5.1 构建缓存管理

随着项目迭代,Docker会产生大量缓存镜像。建议定期清理:

docker system prune -f

可以在JPom的"系统管理 > 定时任务"里配置自动清理任务。

5.2 构建日志分析

构建失败时,重点查看这几类错误:

  1. 依赖下载失败:检查网络和settings.xml配置
  2. 内存不足:增加Docker内存限制或在MAVEN_OPTS中配置:
export MAVEN_OPTS="-Xmx1024m -Xms512m"
  1. 权限问题:检查文件属性和SELinux状态

5.3 多环境配置

通过JPom的参数化构建支持多环境部署。在构建时添加环境变量:

env: SPRING_PROFILES_ACTIVE: prod

然后在SpringBoot的application-prod.yml中配置生产环境参数。

6. 完整实战案例

以电商项目为例,分享我的配置方案:

  1. 代码结构:
ecommerce/ ├── order-service ├── product-service └── docker/ ├── order-service.yml ├── product-service.yml └── settings.xml
  1. JPom构建DSL:
steps: - uses: java version: 17 - uses: maven version: 3.9.4 - uses: cache path: /root/.m2 type: global binds: - /root/.m2/:/root/.m2/ - /data/ecommerce/settings.xml:/root/.m2/settings.xml run: | cd ${JPOM_WORKING_DIR} mvn clean package -Dmaven.test.skip=true -s /root/.m2/settings.xml
  1. 发布脚本:
#!/bin/bash # 获取容器ID CONTAINER_ID=$(docker ps -qf "name=ecommerce-order") # 备份旧jar mkdir -p backups mv order-service.jar backups/order-service_$(date +%Y%m%d%H%M%S).jar # 启动新服务 docker-compose -f docker/order-service.yml up -d

这套配置在我们生产环境稳定运行了半年多,部署时间从原来的15分钟缩短到3分钟以内。最关键的是再也不用手动登录服务器敲命令了,开发体验提升了好几个档次。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 18:14:55

灰狼优化算法求解速冻食品冷链配送路径优化问题

优化结果 最优总成本: 3431.21 元 使用车辆数: 3 辆成本明细:固定成本: 600.00 元运输成本: 612.77 元制冷成本: 62.57 元货损成本: 802.07 元惩罚成本: 1353.81 元详细配送路线:路线 1: 0 -> 15 -> 20 -> 17 -> 13 -> 14 -> 6 -> 10 -> 0路线距离: 9…

作者头像 李华
网站建设 2026/4/14 18:14:13

第四次学习26.4.13

1.while循环while(条件表达式)// 当条件表达式为真时&#xff0c;进入循环体进行循环{直到条件表达式为假时&#xff0c;跳出循环。}2.for循环for(初始化表达式&#xff1b;循环条件表达式&#xff1b;表达式3){复合语句&#xff0c;循环体&#xff1b;//先执行初始化表达式&am…

作者头像 李华
网站建设 2026/4/14 18:11:43

Ostrakon-VL-8B实战:用AI检查商品陈列与卫生,效率提升10倍

Ostrakon-VL-8B实战&#xff1a;用AI检查商品陈列与卫生&#xff0c;效率提升10倍 1. 零售巡检的痛点与AI解决方案 零售行业每天面临着一个看似简单却极其耗时的工作&#xff1a;商品陈列检查和卫生状况评估。传统方法需要管理人员亲自到店&#xff0c;用肉眼检查每个货架、每…

作者头像 李华
网站建设 2026/4/14 18:11:41

AI时代,什么是未来程序员的核心竞争力?

今天我想讲一个比较沉重的话题&#xff0c;大家觉得未来还有程序员吗&#xff1f; 我是不是不应该这么问&#x1f602;&#xff0c;容易让人焦虑&#xff0c;我换种话术问吧&#x1f62c;。 大家觉得&#xff0c;现在在大厂中&#xff0c;我们这些程序员应该怎么向 AI 靠齐&…

作者头像 李华
网站建设 2026/4/14 18:11:33

Wan2.1-UMT5从零部署:Windows系统重装后的完整环境搭建指南

Wan2.1-UMT5从零部署&#xff1a;Windows系统重装后的完整环境搭建指南 刚重装了Windows系统&#xff0c;看着干净清爽的桌面&#xff0c;是不是感觉电脑焕然一新&#xff1f;但紧接着&#xff0c;你可能就面临一个现实问题&#xff1a;之前跑得好好的AI项目&#xff0c;比如想…

作者头像 李华
网站建设 2026/4/14 18:11:28

从扫描件到结构化知识只需217ms:2026奇点大会现场演示的文档理解模型实时推理引擎,背后是3项IEEE新专利与17个隐式语义对齐模块

第一章&#xff1a;从扫描件到结构化知识只需217ms&#xff1a;2026奇点大会现场演示的文档理解模型实时推理引擎&#xff0c;背后是3项IEEE新专利与17个隐式语义对齐模块 2026奇点智能技术大会(https://ml-summit.org) 在2026奇点大会主会场大屏上&#xff0c;一张高噪声A4扫…

作者头像 李华