欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Jenkins整合Docker實現(xiàn)CICD自動化部署的詳細過程(若依項目)

 更新時間:2024年10月12日 10:53:25   作者:qq243920161  
本文介紹了如何使用Jenkins和Docker實現(xiàn)CI/CD自動化部署,文章介紹了環(huán)境準備,包括Jenkins、Docker、JDK、Node和Maven,然后討論了如何配置GitLab環(huán)境并利用Webhooks實現(xiàn)代碼的自動拉取和部署,最后,展示了如何部署前后端分離的項目,并通過實際操作驗證了整個流程的有效性

前期準備

提前準備好jenkins環(huán)境

并且jenkins能使用docker命令,并且已經(jīng)配置好了jdk、node、maven環(huán)境,我之前寫了安裝jenkins的博客,里面講得比較詳細,推薦用我這種方式安裝

docker安裝jenkins,并配置jdk、node和maven_jenkins

需要提前準備好gitlab環(huán)境

github、gitee其實也可以,但是需要和jenkins互相能訪問到,這邊推薦gitlab

docker搭建gitlab

需要準備好mysql

如果沒安裝的,docker一句話就可以了

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

準備好redis環(huán)境

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

安裝gitlab插件

如果想實現(xiàn)代碼提交自動部署,需要安裝gitlab插件

進入系統(tǒng)管理,插件管理

搜索gitlab插件進行安裝

安裝成功即可,無需重啟

開始部署

拉取項目

拉取若依項目,我們拉取的是若依項目的前后端分離版

若依項目下載地址

根目錄有個ruoyi-ui,這是前端項目,我們把它移動到外層,我們分成2個項目部署

部署后端項目

將這兩個sql文件導(dǎo)入到數(shù)據(jù)庫中

到application-druid.yml中修改數(shù)據(jù)庫的連接信息

修改redis的連接信息

根目錄新建Dockerfile

pipeline {
    // 任意節(jié)點都可以執(zhí)行Jenkins流水線
    agent any
    tools {
        // 剛剛配置的java環(huán)境
        jdk 'jdk8'
    }
    // 環(huán)境變量
    environment {
        // 項目名稱
        APP_NAME = 'ruoyi-server'
        // 端口
        APP_PORT = 9800
    }
    // 流水線階段
    stages {
        // 構(gòu)建階段
        stage('build') {
            // 步驟
            steps {
                // 可以寫流水線腳本,groovy語法
                script {
                    // 執(zhí)行shell命令
                    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
                    """
                }
            }
        }
    }
}

根目錄新建Jenkinsfile

pipeline {
    // 任意節(jié)點都可以執(zhí)行Jenkins流水線
    agent any
    tools {
        // 剛剛配置的java環(huán)境
        jdk 'jdk8'
    }
    // 環(huán)境變量
    environment {
        // 項目名稱
        APP_NAME = 'ruoyi-server'
        // 端口
        APP_PORT = 9800
    }
    // 流水線階段
    stages {
        // 構(gòu)建階段
        stage('build') {
            // 步驟
            steps {
                // 可以寫流水線腳本,groovy語法
                script {
                    // 執(zhí)行shell命令
                    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
                    """
                }
            }
        }
    }
}

根目錄新建.dockerignore

這個是為了提高docker的構(gòu)建速度,把不必要的文件屏蔽起來

.git
ruoyi-admin/src
ruoyi-admin/target/classes
ruoyi-admin/target/generated-sources
ruoyi-admin/target/maven-archiver
ruoyi-admin/target/maven-status
ruoyi-common
ruoyi-framework
ruoyi-generator
ruoyi-quartz
ruoyi-system
ruoyi-ui
sql

檢查項目中是否已經(jīng)有了這幾個文件

將項目提交到gitlab

Jenkins中新建任務(wù)

名稱隨便填,選擇流水線,確定

找到流水線,選擇scm

然后選擇git

然后把ssh地址復(fù)制進去

不出意外的話,會出現(xiàn)無法連接倉庫,原因是Jenkins無法拉取gitlab的代碼

我們到Jenkins容器中

docker exec -it jenkins bash

生成ssh秘鑰

ssh-keygen
# 然后3個回車

查看公鑰

cat ~/.ssh/id_rsa.pub

將公鑰配置到gitlab中

進行一次ssh通信,然后將信息保存下來

這步仍然是在jenkins容器中操作的

# 192.168.200.120是gitlab的地址,8091是gitlab的ssh端口
ssh-keyscan -p 8091 192.168.200.120 >> ~/.ssh/known_hosts

查看一下.ssh目錄下的文件

ls -l ~/.ssh

如果有這3個文件,就說明Jenkins可以拉取gitlab的代碼了

回到Jenkins看下,就會發(fā)現(xiàn)錯誤消失了

下一步,找到這個,把它勾上

展開高級

找到Secret token,點擊Generate生成,就會生成一串token,這串token一會兒到gitlab中會用上

我們到gitlab中Settings中有一個Webhooks

我們來添加一個webhook

填寫相關(guān)信息

如果出現(xiàn)了這個錯誤,說明github沒有開啟webhook

 我們到管理員設(shè)置中,找到Network

找到Allow requests to the local network from webhooks and integrations,勾上

這時候再來添加webhooks就能添加了

我們模擬一次push事件,看看Jenkins有什么反應(yīng)

回來看Jenkins,你就會發(fā)現(xiàn)Jenkins在構(gòu)建了

這時候代碼push的時候,Jenkins也會自動構(gòu)建

如果沒有報錯就說明構(gòu)建成功了

部署前端項目

打開前端項目

添加nginx.conf,真實的后端地址根據(jù)實際情況修改

server {
    # 前端訪問端口
    listen 9801;
    # 前端
    location / {
        # 前端頁面路徑
        root /usr/share/nginx/html;
        # 嘗試著從$uri尋找靜態(tài)資源,找不到就到$uri/找,如果還是找不到就找/index.html
        try_files $uri $uri/ /index.html;
    }
    # 后端
    location /prod-api {
        # 去掉/prot-api開頭
        rewrite ^/prod-api/(.*)$ /$1 break;
        # 真實的后端地址,根據(jù)實際情況修改
        proxy_pass http://192.168.200.120:9800;
    }
}

添加Dockerfile

# 使用nginx鏡像來部署
FROM nginx:1.26.2
# 解決文件名亂碼問題
ENV LC_ALL=C.UTF-8
# 將nginx配置文件添加到容器
ADD nginx.conf /etc/nginx/conf.d
# 前端打包后,將dist下的文件復(fù)制到容器里
COPY dist/ /usr/share/nginx/html/

添加.dockerignore

node_modulessrc

添加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
                    """
                }
            }
        }
    }
}

檢查一下有沒有這幾個文件

提交代碼

Jenkins再新建一個項目

和剛剛一樣,勾上

生成Secret token

設(shè)置gitlab倉庫地址

 gitlab中webhooks配置

添加一個webhook

然后push代碼

等待Jenkins構(gòu)建

構(gòu)建成功

我們到瀏覽器看一下吧

到此這篇關(guān)于Jenkins整合Docker實現(xiàn)CICD自動化部署的文章就介紹到這了,更多相關(guān)Jenkins整合Docker CICD自動化部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker學(xué)習(xí)筆記之docker入門

    Docker學(xué)習(xí)筆記之docker入門

    docker可以類比成window下的VMware。docker有兩個基本的概念:容器(container)和鏡像(image),分別對應(yīng)為VMware中的系統(tǒng)鏡像和系統(tǒng)鏡像中運行的軟件。docker的強大之處在于VMware只能運行幾個虛擬機的設(shè)備上docker可以同時運行幾十甚至上百個虛擬機。
    2016-11-11
  • docker?創(chuàng)建容器時指定容器ip的實現(xiàn)示例

    docker?創(chuàng)建容器時指定容器ip的實現(xiàn)示例

    在實際部署中,我們需要指定容器ip,本文主要介紹了docker?創(chuàng)建容器時指定容器ip,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • skywalking容器化部署docker鏡像構(gòu)建k8s從測試到可用

    skywalking容器化部署docker鏡像構(gòu)建k8s從測試到可用

    這篇文章主要為大家介紹了skywalking容器化部署docker鏡像構(gòu)建k8s從測試到可用的構(gòu)建部署過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • docker存儲目錄遷移示例教程

    docker存儲目錄遷移示例教程

    隨著docker的使用時間越來越長,導(dǎo)致鏡像和容器越來越多,占滿了系統(tǒng)盤空間,這時,我們需要給它們搬個家了,這篇文章主要介紹了docker存儲目錄遷移教程,需要的朋友可以參考下
    2023-06-06
  • docker部署Nestjs的簡單配置實現(xiàn)

    docker部署Nestjs的簡單配置實現(xiàn)

    使用Docker部署NestJS應(yīng)用程序可以確保在不同的環(huán)境中運行一致,并且避免了由于依賴關(guān)系或配置問題導(dǎo)致的部署錯誤,本文主要介紹了docker來部署Nestjs的簡單配置,感興趣的可以了解一下
    2024-02-02
  • 淺談docker --privileged=true參數(shù)作用

    淺談docker --privileged=true參數(shù)作用

    這篇文章主要介紹了淺談docker --privileged=true參數(shù)作用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • docker容器如何配置hosts文件問題

    docker容器如何配置hosts文件問題

    這篇文章主要介紹了docker容器如何配置hosts文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Docker如何進入啟動容器

    Docker如何進入啟動容器

    本篇文章主要介紹了Docker如何進入啟動容器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • docker開通2375端口防漏洞問題

    docker開通2375端口防漏洞問題

    這篇文章主要介紹了docker開通2375端口防漏洞問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • docker 數(shù)據(jù)目錄遷移的兩種實現(xiàn)方法

    docker 數(shù)據(jù)目錄遷移的兩種實現(xiàn)方法

    本文主要介紹了docker 數(shù)據(jù)目錄遷移的兩種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03

最新評論