当前位置: 首页 > news >正文

Jenkins + Docker 打造自动化持续部署流水线

🚀 Jenkins + Docker 打造自动化持续部署流水线

从“代码提交”到“线上运行”,一次构建、自动打包、自动部署。

本文将带你一步步搭建一个企业级 CI/CD 流水线,让 Spring Boot 应用实现 一键构建、一键上线
在这里插入图片描述


🧠 一、背景与痛点

传统部署流程中常见问题:

  • 🤦‍♂️ 每次更新都需要手动打包、上传、重启;
  • 🐢 发布慢,人工操作多;
  • ⚠️ 人为失误风险大;
  • 🧩 无法自动回滚、持续交付。
    在这里插入图片描述

解决方案:Jenkins + Docker + Git + CI/CD
通过 Jenkins 监听代码变更,自动构建 Docker 镜像,并推送部署,实现“提交即上线”。


⚙️ 二、系统架构概览

开发者提交代码 → Git 仓库触发 Webhook → Jenkins 自动构建 → Docker 打包镜像 → 容器启动应用

🧩 技术栈:

  • Jenkins:自动化构建工具
  • Docker:容器化运行环境
  • Spring Boot:示例项目
  • Git:代码版本管理

🧰 三、环境准备

组件版本说明
Jenkins2.426+安装 Docker 插件
Docker24+支持 BuildKit
JDK17Spring Boot 运行环境
Gitlatest源码版本管理

安装 Jenkins 插件:

在 Jenkins → “插件管理” → 安装以下:

  • Docker Pipeline
  • Git Parameter
  • Pipeline Utility Steps
  • Blue Ocean(可选)

🧱 四、示例项目结构

springboot-docker-demo/┣━ src/┃   ┣━ main/java/com/example/demo/┃   ┗━ resources/┣━ pom.xml┣━ Dockerfile┗━ Jenkinsfile

🧩 五、Dockerfile 构建镜像

# 使用 OpenJDK 镜像
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

🧱 六、Jenkins Pipeline 流水线脚本(重点章节💥)

Jenkinsfile

pipeline {agent anyenvironment {IMAGE_NAME = "springboot-demo"IMAGE_TAG = "v${BUILD_NUMBER}"DOCKERHUB_USER = "your-dockerhub-username"}stages {stage('📥 拉取代码') {steps {git branch: 'main', url: 'https://github.com/yourname/springboot-docker-demo.git'}}stage('🔨 构建项目') {steps {sh 'mvn clean package -DskipTests'}}stage('🐳 构建 Docker 镜像') {steps {sh 'docker build -t $IMAGE_NAME:$IMAGE_TAG .'}}stage('🚀 推送到 Docker Hub') {steps {withCredentials([usernamePassword(credentialsId: 'dockerhub', usernameVariable: 'USER', passwordVariable: 'PASS')]) {sh '''echo "$PASS" | docker login -u "$USER" --password-stdindocker tag $IMAGE_NAME:$IMAGE_TAG $DOCKERHUB_USER/$IMAGE_NAME:$IMAGE_TAGdocker push $DOCKERHUB_USER/$IMAGE_NAME:$IMAGE_TAG'''}}}stage('📦 部署到服务器') {steps {sh '''docker stop springboot-demo || truedocker rm springboot-demo || truedocker pull $DOCKERHUB_USER/$IMAGE_NAME:$IMAGE_TAGdocker run -d -p 8080:8080 --name springboot-demo $DOCKERHUB_USER/$IMAGE_NAME:$IMAGE_TAG'''}}}post {success {echo "✅ 部署成功!访问:http://<server-ip>:8080"}failure {echo "❌ 部署失败,请检查 Jenkins 控制台日志"}}
}

🧪 七、实战演示:自动化部署 Spring Boot 应用

🧩 场景说明

我们以一个简单的库存管理系统为例:

  • 后端使用 Spring Boot;
  • 提交到 GitHub;
  • Jenkins 自动拉取、构建、发布;
  • Docker 运行应用容器。

🚀 Step 1:配置 Jenkins Job

1️⃣ 选择 “新建任务 → Pipeline”
2️⃣ 代码来源:Git
3️⃣ 指定分支:main
4️⃣ Pipeline 脚本路径:Jenkinsfile
5️⃣ 勾选“触发器”:

GitHub hook trigger for GITScm polling

🚀 Step 2:推送代码触发自动部署

git add .
git commit -m "更新库存接口"
git push origin main

👉 Jenkins 自动启动流水线,控制台日志中可看到:

📥 拉取代码
🔨 构建项目
🐳 构建 Docker 镜像
🚀 推送到 Docker Hub
📦 部署到服务器
✅ 部署成功!访问:http://server-ip:8080

🧾 Step 3:验证部署结果

访问:

http://your-server-ip:8080/api/stock/list

输出示例:

[{"product":"MacBook Air","stock":12},{"product":"iPhone 16","stock":7}
]

说明部署成功 🎉。


⚡ 八、流水线优化方向

问题优化思路
多环境部署使用参数化构建 + 环境变量
镜像版本混乱自动打上 Git Commit Tag
流水线慢启用 Docker BuildKit 并缓存层
自动回滚Jenkinsfile 中加入 rollback 阶段
部署安全Jenkins Agent + 凭证绑定

🔧 九、可视化效果(Blue Ocean)

Jenkins Blue Ocean 插件可以让整个流水线图形化展示:

  • 每个阶段的执行耗时
  • 日志展开查看
  • 失败点快速定位
    在这里插入图片描述

🧠 十、总结

模块技术点
自动化工具Jenkins Pipeline
镜像构建Dockerfile
自动部署容器化运行 Spring Boot
持续交付Git Hook 触发构建
企业应用自动构建、测试、上线全链路

💬 结语

你们团队现在的部署方式是怎样的?
是脚本式、容器化,还是 Jenkins 流水线?
欢迎留言讨论,下一篇我写《GitLab CI vs Jenkins:谁才是更好的持续集成方案?》🔥

http://www.dtcms.com/a/581563.html

相关文章:

  • 利用DeepSeek改写SQLite版本的二进制位数独求解SQL
  • python+django/flask的校园活动中心场地预约系统
  • 建设网站公司哪好html5手机网站开发环境
  • Python高效实现Word转HTML:从基础到进阶的全流程方案
  • 智能驱动,安全可控:EasyGBS平台如何构建企业生产智能监控新模式
  • 建设部网站官网证书查询做网站建设最好学什么
  • 【深度解析】Performance API 与 UKM:从开发者工具到浏览器遥测,全面解锁 Web 性能优化格局
  • 前端项目打包后报错 Uncaught ReferenceError: process is not defined
  • 基于Python的历届奥运会数据可视化分析系统-django+spider
  • 【ZeroRang WebRTC】ICE 在 WebRTC 中的角色与工作原理(深入指南)
  • 计算机视觉(一):相机标定
  • OJ项目面经
  • 免费空间领取网站为企业设计网站
  • 邮储政务金融云平台官网地址无法百度
  • Flutter AnimatedRotation 实现旋转动画
  • 五、CSS盒子模型(下)
  • 网站建设的方法有四种怎样创建公众号
  • 开源项目ruoyi-ai本地部署
  • 乡镇同城O2O系统开发:Java与PHP技术选型对比
  • google提交网站入口能打开各种网站的搜索引擎
  • MyBatis完整教程IDEA版(3)--动态SQL/MyBatis缓存
  • 基于Vue的饮食健康管理系统的设计与实现fs9r43tj(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • linux tomcat注册服务
  • OpenCV计算机视觉实战(29)——OpenCV DNN模块
  • 基于若依-内容管理动态修改,通过路由字典配置动态管理
  • 中江门户网站中铁建设集团有限公司招投标平台
  • Oracle与HGDB拼接的差异
  • Rust高级类型与零成本抽象实战
  • 数据结构 -- 树(遍历)
  • 浅析MySQL InnoDB存储引擎的MVCC实现原理