news 2026/3/13 8:31:09

基于Docker与Jenkins实现RuoYi-Vue项目的CICD持续集成部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于Docker与Jenkins实现RuoYi-Vue项目的CICD持续集成部署

前言

在现代软件开发流程中,持续集成/持续部署(CICD)已经成为提升开发效率、保障代码质量的关键实践。本文将详细介绍如何利用Docker容器化技术结合Jenkins,搭建一套完整的CICD流程,实现RuoYi-Vue前后端分离项目的自动化构建、测试和部署。

一、环境准备与架构设计

1. 主机环境规划

本次部署采用两台服务器(虚拟机)搭建CICD环境,具体配置如下:

主机IP部署服务清单配置要求
192.168.10.13Jenkins、Redis、MySQL、Spring Boot服务、Nginx至少2核8G内存
192.168.10.80Docker、GitLab1核4G内存

2. 核心技术栈

  • 版本控制:GitLab - 用于代码仓库管理
  • 持续集成:Jenkins - 实现自动化构建与部署
  • 容器化:Docker - 统一应用运行环境
  • 数据库:MySQL 8.0 - 存储应用数据
  • 缓存:Redis 7.4 - 提升应用性能
  • Web服务器:Nginx - 部署前端应用并反向代理

3. Docker环境安装

所有服务器需先安装Docker环境,步骤如下:

# 安装依赖包yuminstall-yyum-utils device-mapper-persistent-data lvm2# 设置阿里云镜像源yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 安装指定版本Docker并设置开机自启yuminstall-ydocker-ce-20.10.18 docker-ce-cli-20.10.18 containerd.io systemctl start docker.service systemctlenabledocker.service# 配置华为镜像加速器mkdir-p/etc/dockertee/etc/docker/daemon.json<<-'EOF' { "registry-mirrors": [ "https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com" ] } EOFsystemctl daemon-reload systemctl restartdocker

二、GitLab部署与代码管理

1. GitLab容器部署

# 拉取GitLab镜像dockerpull beginor/gitlab-ce# 创建数据卷目录并授权mkdir-p/data/gitlab/etc/ /data/gitlab/log/ /data/gitlab/datachmod777/data/gitlab/etc/ /data/gitlab/log/ /data/gitlab/data/# 启动GitLab容器dockerrun-itd--name=gitlab\--restart=always\--privileged=true\-p8443:443\-p80:80\-p222:22\-v/data/gitlab/etc:/etc/gitlab\-v/data/gitlab/log:/var/log/gitlab\-v/data/gitlab/data:/var/opt/gitlab\beginor/gitlab-ce

2. GitLab配置修改

# 修改修改外部访问地址sed-i"/external_url 'GENERATED_EXTERNAL_URL'/a external_url\t'http://192.168.10.80' "/data/gitlab/etc/gitlab.rb# 修改SSH主机地址sed-i"/gitlab_ssh_host/a gitlab_rails['gitlab_ssh_host']= '192.168.10.80' "/data/gitlab/etc/gitlab.rb# 修改SSH端口sed-i"/gitlab_shell_ssh_port/a gitlab_rails['gitlab_shell_ssh_port'] = 222"/data/gitlab/etc/gitlab.rb# 重启GitLabdockerrestart gitlab

3. 代码上传至GitLab

  1. 从Gitee克隆RuoYi-Vue项目:git clone https://gitee.com/y_project/RuoYi-Vue.git
  2. 在GitLab创建创建两个项目:ruoyi-server(后端)和ruoyi-ui(前端)
  3. 将代码分别推送至对应仓库:
# 初始化本地仓库gitinit# 关联远程仓库gitremoteaddorigin http://192.168.10.80/root/ruoyi-server.git# 提交并推送代码gitadd.gitcommit-m"Initial commit"gitpush-uorigin master

三、Jenkins部署与配置

1. 定制Jenkins镜像

为满足RuoYi项目构建需求,我们需要定制包含JDK、Maven和Node.js的Jenkins镜像:

FROM jenkins/jenkins:2.480-jdk21 EXPOSE 8080 # 添加依赖工具 ADD apache-maven-3.9.9-bin.tar.gz /usr/local ADD jdk-8u421-linux-x64.tar.gz /usr/local ADD node-v11.0.0-linux-x64.tar.gz /usr/local # 覆盖maven配置 ADD settings.xml /usr/local/apache-maven-3.9.9/conf/ # 配置环境变量 ENV TZ=Asia/Shanghai ENV M2_HOME=/usr/local/apache-maven-3.9.9 ENV NODE_HOME=/usr/local/node-v11.0.0-linux-x64 ENV PATH=$M2_HOME/bin:$NODE_HOME/bin:$PATH

构建镜像:docker build -t jenkins .

2. 启动Jenkins容器

# 创建数据目录mkdir-p/data/jenkins/jenkins_homechmod+777 /data/jenkins/jenkins_home# 启动容器dockerrun-d--namejenkins\-p0.0.0.0:8080:8080\-v/data/jenkins/jenkins_home:/var/jenkins_home\-v/etc/localtime:/etc/localtime\-v/run/docker.sock:/run/docker.sock\-v/usr/bin/docker:/usr/bin/docker\jenkins

3. 初始化Jenkins

  1. 获取初始密码:docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
  2. 访问http://192.168.10.13:8080,输入密码并安装推荐插件
  3. 配置JDK环境:进入"全局工具配置",设置JDK安装目录

四、基础服务部署

1. MySQL部署

dockerrun-d\--namemysql\-p0.0.0.0:3306:3306\-eMYSQL_ROOT_PASSWORD=123456\--restart=always\mysql:8.0.39# 导入初始化数据dockerexec-itmysqlbashmysql-uroot-p123456create database ry-vue;use ry-vue;source/opt/ry_20250522.sql;source/opt/quartz.sql;

2. Redis部署

dockerrun-d\--nameredis\-p0.0.0.0:6379:6379\--restart=always\redis:7.4.1

五、CICD流水线配置

1. 后端服务流水线

① 项目配置修改

修改ruoyi-admin/src/main/resources/application-druid.yml中的数据库连接信息和Redis配置,确保指向正确的服务地址。

② 创建Dockerfile
FROM openjdk:8u342 ENV TZ=Asia/Shanghai ADD ruoyi-admin/target/ruoyi-admin.jar app.jar ENTRYPOINT ["java", "-jar", "app.jar"]
③ 创建Jenkinsfile
pipeline{agent any tools{jdk'jdk8'}environment{APP_NAME='ruoyi-server'APP_PORT=9800}stages{stage('build'){steps{script{sh'mvn clean package -DskipTests=true'}}}stage('deploy'){steps{script{sh""" docker stop$APP_NAME|| true docker rm$APP_NAME|| true docker rmi$APP_NAME|| true docker build -t$APP_NAME. docker run -d --name$APP_NAME\ -p 0.0.0.0:$APP_PORT:$APP_PORT\ --restart=always \$APP_NAME\ --server.port=$APP_PORT"""}}}}}

2. 前端服务流水线

① 创建Nginx配置文件
server { listen 9801; charset utf-8; location / { root /usr/share/nginx/html; try_files $uri $uri/ /index.html; } location /prod-api { rewrite ^/prod-api/(.*)$ /$1 break; proxy_pass http://192.168.10.13:9800; } }
② 创建Dockerfile
FROM nginx:1.26.2 ENV LC_ALL=C.UTF-8 RUN rm -rf /etc/nginx/conf.d/default.conf ADD nginx.conf /etc/nginx/conf.d COPY dist/ /usr/share/nginx/html/
③ 创建Jenkinsfile
pipeline{agent any environment{APP_NAME='ruiyi-ui'APP_PORT=9801}stages{stage('build'){steps{script{sh""" npm install npm run build:prod """}}}stage('deploy'){steps{script{sh""" docker stop$APP_NAME|| true docker rm$APP_NAME|| true docker rmi$APP_NAME|| true docker build -t$APP_NAME. docker run -d --name$APP_NAME\ -p 0.0.0.0:$APP_PORT:$APP_PORT\ --restart=always \$APP_NAME"""}}}}}

3. 配置自动触发

  1. 在Jenkins项目中启用"Build when a change is pushed to GitLab"
  2. 生成Secret token并在GitLab项目的Webhooks中配置
  3. 配置触发URL:http://192.168.10.13:8080/project/项目名称

六、验证部署结果

完成上述配置后,每次向GitLab推送代码时,Jenkins将自动触发构建流程:

  1. 后端服务构建完成后,可访问http://192.168.10.13:9800验证API是否可用
  2. 前端服务构建完成后,通过http://192.168.10.13:9801访问前端页面
  3. 使用默认账号密码(admin/123456)登录系统,验证整体功能

总结
通过这套CICD流程,我们实现了RuoYi-Vue项目从代码提交到自动部署的全流程自动化,极大地提高了开发效率和部署一致性,为团队协作和持续交付奠定了坚实基础。

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

RePKG完整指南:Wallpaper Engine资源提取与转换深度解析

RePKG完整指南&#xff1a;Wallpaper Engine资源提取与转换深度解析 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg RePKG工具是一款专为Wallpaper Engine设计的资源管理工具&#…

作者头像 李华
网站建设 2026/3/13 14:30:58

WELearnHelper完整指南:轻松实现智能学习自动化

WELearnHelper完整指南&#xff1a;轻松实现智能学习自动化 【免费下载链接】WELearnHelper 显示WE Learn随行课堂题目答案&#xff1b;支持班级测试&#xff1b;自动答题&#xff1b;刷时长&#xff1b;基于生成式AI(ChatGPT)的答案生成 项目地址: https://gitcode.com/gh_m…

作者头像 李华
网站建设 2026/3/9 15:52:38

DOL-CHS-MODS汉化美化包完整使用指南:从下载到精通

DOL-CHS-MODS汉化美化包完整使用指南&#xff1a;从下载到精通 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS 想要彻底掌握DOL-CHS-MODS汉化美化包的使用方法吗&#xff1f;这份终极指南将带您从基…

作者头像 李华
网站建设 2026/3/9 13:03:36

3步彻底告别游戏卡顿:SOCD Cleaner让你操作如丝般顺滑

3步彻底告别游戏卡顿&#xff1a;SOCD Cleaner让你操作如丝般顺滑 【免费下载链接】socd SOCD cleaner tool for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否曾在激烈的对局中&#xff0c;因为同时按下左右方向键而让角色原地卡顿&#xff1f…

作者头像 李华
网站建设 2026/3/13 4:28:28

1.环境搭建

一.交叉编译器存放位置1. 系统级标准目录&#xff08;推荐&#xff09;这类目录是系统默认的 “软件工具” 存放位置&#xff0c;所有用户都能访问&#xff0c;适合全局使用的交叉编译器&#xff1a;/usr/local/&#xff1a;最常用的目录&#xff0c;通常会在其下创建子目录区分…

作者头像 李华
网站建设 2026/3/9 23:22:43

Hitboxer SOCD清理工具:游戏操作的无缝优化方案

在激烈的游戏对抗中&#xff0c;按键冲突往往成为玩家操作流畅度的主要障碍。Hitboxer作为一款专业的SOCD清理工具&#xff0c;通过智能算法彻底解决了这一技术难题&#xff0c;为游戏玩家带来前所未有的操作体验。 【免费下载链接】socd SOCD cleaner tool for epic gamers …

作者头像 李华