最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker與Jenkins實(shí)現(xiàn)RuoYi-Vue前后端分離項(xiàng)目的CICD全流程自動(dòng)化

 更新時(shí)間:2026年01月02日 09:16:59   作者:2501_93990905  
在現(xiàn)代軟件開發(fā)流程中,持續(xù)集成/持續(xù)部署(CICD)已經(jīng)成為提升開發(fā)效率、保障代碼質(zhì)量的關(guān)鍵實(shí)踐,本文將詳細(xì)介紹如何利用Docker容器化技術(shù)結(jié)合Jenkins,搭建一套完整的CICD流程,實(shí)現(xiàn)RuoYi-Vue前后端分離項(xiàng)目的自動(dòng)化構(gòu)建、測(cè)試和部署,從代碼提交到自動(dòng)部署的全流程自動(dòng)化

在現(xiàn)代軟件開發(fā)流程中,持續(xù)集成/持續(xù)部署(CICD)已經(jīng)成為提升開發(fā)效率、保障代碼質(zhì)量的關(guān)鍵實(shí)踐。本文將詳細(xì)介紹如何利用Docker容器化技術(shù)結(jié)合Jenkins,搭建一套完整的CICD流程,實(shí)現(xiàn)RuoYi-Vue前后端分離項(xiàng)目的自動(dòng)化構(gòu)建、測(cè)試和部署,從代碼提交到自動(dòng)部署的全流程自動(dòng)化。

一、環(huán)境準(zhǔn)備與架構(gòu)設(shè)計(jì)

1. 主機(jī)環(huán)境規(guī)劃

本次部署采用兩臺(tái)服務(wù)器(虛擬機(jī))搭建CICD環(huán)境,具體配置如下:

主機(jī)IP部署服務(wù)清單配置要求
192.168.10.13Jenkins、Redis、MySQL、Spring Boot服務(wù)、Nginx至少2核8G內(nèi)存
192.168.10.80Docker、GitLab1核4G內(nèi)存

2. 核心技術(shù)棧

  • 版本控制:GitLab - 用于代碼倉(cāng)庫(kù)管理
  • 持續(xù)集成:Jenkins - 實(shí)現(xiàn)自動(dòng)化構(gòu)建與部署
  • 容器化:Docker - 統(tǒng)一應(yīng)用運(yùn)行環(huán)境
  • 數(shù)據(jù)庫(kù):MySQL 8.0 - 存儲(chǔ)應(yīng)用數(shù)據(jù)
  • 緩存:Redis 7.4 - 提升應(yīng)用性能
  • Web服務(wù)器:Nginx - 部署前端應(yīng)用并反向代理

3. Docker環(huán)境安裝

所有服務(wù)器需先安裝Docker環(huán)境,步驟如下:

# 安裝依賴包
yum install -y yum-utils device-mapper-persistent-data lvm2

# 設(shè)置阿里云鏡像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安裝指定版本Docker并設(shè)置開機(jī)自啟
yum install -y docker-ce-20.10.18 docker-ce-cli-20.10.18 containerd.io   
systemctl start docker.service
systemctl enable docker.service

# 配置華為鏡像加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [ "https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com" ]
}
EOF
systemctl daemon-reload
systemctl restart docker

二、GitLab部署與代碼管理

1. GitLab容器部署

# 拉取GitLab鏡像
docker pull beginor/gitlab-ce

# 創(chuàng)建數(shù)據(jù)卷目錄并授權(quán)
mkdir -p /data/gitlab/etc/ /data/gitlab/log/ /data/gitlab/data
chmod 777 /data/gitlab/etc/ /data/gitlab/log/ /data/gitlab/data/

# 啟動(dòng)GitLab容器
docker run -itd --name=gitlab \
--restart=always \
--privileged=true \
-p 8443:443 \
-p 80:80 \
-p 222: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主機(jī)地址
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

# 重啟GitLab
docker restart gitlab

3. 代碼上傳至GitLab

  1. 從Gitee克隆RuoYi-Vue項(xiàng)目:git clone https://gitee.com/y_project/RuoYi-Vue.git
  2. 在GitLab創(chuàng)建創(chuàng)建兩個(gè)項(xiàng)目:ruoyi-server(后端)和ruoyi-ui(前端)
  3. 將代碼分別推送至對(duì)應(yīng)倉(cāng)庫(kù):
# 初始化本地倉(cāng)庫(kù)
git init

# 關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù)
git remote add origin http://192.168.10.80/root/ruoyi-server.git

# 提交并推送代碼
git add .
git commit -m "Initial commit"
git push -u origin master

三、Jenkins部署與配置

1. 定制Jenkins鏡像

為滿足RuoYi項(xiàng)目構(gòu)建需求,我們需要定制包含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/
 
# 配置環(huán)境變量
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

構(gòu)建鏡像:docker build -t jenkins .

2. 啟動(dòng)Jenkins容器

# 創(chuàng)建數(shù)據(jù)目錄
mkdir -p /data/jenkins/jenkins_home
chmod +777 /data/jenkins/jenkins_home

# 啟動(dòng)容器
docker run -d --name jenkins \
-p 0.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環(huán)境:進(jìn)入"全局工具配置",設(shè)置JDK安裝目錄

四、基礎(chǔ)服務(wù)部署

1. MySQL部署

docker run -d \
--name mysql \
-p 0.0.0.0:3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
--restart=always \
mysql:8.0.39

# 導(dǎo)入初始化數(shù)據(jù)
docker exec -it mysql bash
mysql -uroot -p123456
create database ry-vue;
use ry-vue;
source /opt/ry_20250522.sql;
source /opt/quartz.sql;

2. Redis部署

docker run -d \
--name redis \
-p 0.0.0.0:6379:6379 \
--restart=always \
redis:7.4.1

五、CICD流水線配置

1. 后端服務(wù)流水線

① 項(xiàng)目配置修改

修改ruoyi-admin/src/main/resources/application-druid.yml中的數(shù)據(jù)庫(kù)連接信息和Redis配置,確保指向正確的服務(wù)地址。

② 創(chuàng)建Dockerfile

FROM openjdk:8u342
ENV TZ=Asia/Shanghai
ADD ruoyi-admin/target/ruoyi-admin.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]

③ 創(chuàng)建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. 前端服務(wù)流水線

① 創(chuàng)建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;
    }
}

② 創(chuàng)建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/

③ 創(chuàng)建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. 配置自動(dòng)觸發(fā)

  1. 在Jenkins項(xiàng)目中啟用"Build when a change is pushed to GitLab"
  2. 生成Secret token并在GitLab項(xiàng)目的Webhooks中配置
  3. 配置觸發(fā)URL:http://192.168.10.13:8080/project/項(xiàng)目名稱

六、驗(yàn)證部署結(jié)果

完成上述配置后,每次向GitLab推送代碼時(shí),Jenkins將自動(dòng)觸發(fā)構(gòu)建流程:

  1. 后端服務(wù)構(gòu)建完成后,可訪問http://192.168.10.13:9800驗(yàn)證API是否可用
  2. 前端服務(wù)構(gòu)建完成后,通過http://192.168.10.13:9801訪問前端頁面
  3. 使用默認(rèn)賬號(hào)密碼(admin/123456)登錄系統(tǒng),驗(yàn)證整體功能

總結(jié)
通過這套CICD流程,我們實(shí)現(xiàn)了RuoYi-Vue項(xiàng)目從代碼提交到自動(dòng)部署的全流程自動(dòng)化,極大地提高了開發(fā)效率和部署一致性,為團(tuán)隊(duì)協(xié)作和持續(xù)交付奠定了堅(jiān)實(shí)基礎(chǔ)。

到此這篇關(guān)于Docker與Jenkins實(shí)現(xiàn)RuoYi-Vue前后端分離項(xiàng)目的CICD全流程自動(dòng)化的文章就介紹到這了,更多相關(guān)RuoYi-Vue代碼提交到自動(dòng)部署的CICD內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker啟動(dòng)rabbitmq以及使用方式詳解

    docker啟動(dòng)rabbitmq以及使用方式詳解

    RabbitMQ是一個(gè)由erlang開發(fā)的消息隊(duì)列,下面這篇文章主要給大家介紹了關(guān)于docker啟動(dòng)rabbitmq以及使用的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Docker中配置國(guó)內(nèi)鏡像設(shè)置

    Docker中配置國(guó)內(nèi)鏡像設(shè)置

    這篇文章主要介紹了Docker中配置國(guó)內(nèi)鏡像設(shè)置,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • Docker上傳鏡像至私有倉(cāng)庫(kù)的方法示例

    Docker上傳鏡像至私有倉(cāng)庫(kù)的方法示例

    這篇文章主要介紹了Docker上傳鏡像至私有倉(cāng)庫(kù)的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • Mac OSX系統(tǒng) Docker啟用Docker遠(yuǎn)程API功能

    Mac OSX系統(tǒng) Docker啟用Docker遠(yuǎn)程API功能

    這篇文章主要介紹了Mac OSX系統(tǒng) Docker啟用Docker遠(yuǎn)程API功能的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • docker如何查詢鏡像版本信息

    docker如何查詢鏡像版本信息

    這篇文章主要介紹了docker如何查詢鏡像版本信息問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Docker中設(shè)置靜態(tài)IP地址方式

    Docker中設(shè)置靜態(tài)IP地址方式

    本文介紹了Docker容器設(shè)置靜態(tài)IP的四種方法,包括自定義bridge網(wǎng)絡(luò)(推薦)、macvlan網(wǎng)絡(luò)(物理IP接入)、docker-compose配置及修改現(xiàn)有容器,涵蓋IP沖突解決、云環(huán)境適配等注意事項(xiàng),并對(duì)比靜態(tài)與動(dòng)態(tài)IP的優(yōu)缺點(diǎn),提供最佳實(shí)踐建議
    2025-07-07
  • Ubuntu Docker安裝并使用的方法

    Ubuntu Docker安裝并使用的方法

    最近在學(xué)習(xí)docker,本文就從入門開始介紹Ubuntu Docker安裝并使用的方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-09-09
  • Docker容器鏡像加載及底層基本原理深入解析

    Docker容器鏡像加載及底層基本原理深入解析

    這篇文章主要為大家介紹了Docker容器鏡像加載及底層基本原理深入分析,讓大家能夠有更深入的理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Docker 數(shù)據(jù)卷,數(shù)據(jù)卷容器詳細(xì)介紹

    Docker 數(shù)據(jù)卷,數(shù)據(jù)卷容器詳細(xì)介紹

    這篇文章主要介紹了 Docker 數(shù)據(jù)卷,數(shù)據(jù)卷容器詳細(xì)介紹的相關(guān)資料,這里對(duì)Docker 數(shù)據(jù)卷,數(shù)據(jù)卷容器的感念及相關(guān)操作進(jìn)行了介紹,需要的朋友可以參考下
    2016-11-11
  • 淺談docker的上下文和工作目錄

    淺談docker的上下文和工作目錄

    在編寫Dockerfile時(shí)我們總會(huì)接觸到COPY上下文和工作目錄,有時(shí)候這些位置搞不清楚,本文就來介紹一下docker的上下文和工作目錄,感興趣的可以了解一下
    2025-09-09

最新評(píng)論

浑源县| 泽库县| 碌曲县| 罗平县| 景德镇市| 五家渠市| 湖州市| 昌黎县| 昭觉县| 灵丘县| 卫辉市| 新竹市| 德格县| 册亨县| 大余县| 祁门县| 哈尔滨市| 绥芬河市| 衡东县| 利津县| 内丘县| 和龙市| 大姚县| 宜春市| 镇雄县| 龙山县| 大厂| 茶陵县| 额济纳旗| 宜兰县| 文水县| 临武县| 专栏| 巴南区| 肇州县| 龙岩市| 岑溪市| 岫岩| 衡东县| 安吉县| 油尖旺区|