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

Jenkins整合Docker實(shí)現(xiàn)CICD自動(dòng)化部署的詳細(xì)過(guò)程(若依項(xiàng)目)

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

前期準(zhǔn)備

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

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

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

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

github、gitee其實(shí)也可以,但是需要和jenkins互相能訪問(wèn)到,這邊推薦gitlab

docker搭建gitlab

需要準(zhǔn)備好mysql

如果沒(méi)安裝的,docker一句話就可以了

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

準(zhǔn)備好redis環(huán)境

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

安裝gitlab插件

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

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

搜索gitlab插件進(jìn)行安裝

安裝成功即可,無(wú)需重啟

開(kāi)始部署

拉取項(xiàng)目

拉取若依項(xiàng)目,我們拉取的是若依項(xiàng)目的前后端分離版

若依項(xiàng)目下載地址

根目錄有個(gè)ruoyi-ui,這是前端項(xiàng)目,我們把它移動(dòng)到外層,我們分成2個(gè)項(xiàng)目部署

部署后端項(xiàng)目

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

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

修改redis的連接信息

根目錄新建Dockerfile

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

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

.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

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

將項(xiàng)目提交到gitlab

Jenkins中新建任務(wù)

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

找到流水線,選擇scm

然后選擇git

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

不出意外的話,會(huì)出現(xiàn)無(wú)法連接倉(cāng)庫(kù),原因是Jenkins無(wú)法拉取gitlab的代碼

我們到Jenkins容器中

docker exec -it jenkins bash

生成ssh秘鑰

ssh-keygen
# 然后3個(gè)回車

查看公鑰

cat ~/.ssh/id_rsa.pub

將公鑰配置到gitlab中

進(jìn)行一次ssh通信,然后將信息保存下來(lái)

這步仍然是在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個(gè)文件,就說(shuō)明Jenkins可以拉取gitlab的代碼了

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

下一步,找到這個(gè),把它勾上

展開(kāi)高級(jí)

找到Secret token,點(diǎn)擊Generate生成,就會(huì)生成一串token,這串token一會(huì)兒到gitlab中會(huì)用上

我們到gitlab中Settings中有一個(gè)Webhooks

我們來(lái)添加一個(gè)webhook

填寫相關(guān)信息

如果出現(xiàn)了這個(gè)錯(cuò)誤,說(shuō)明github沒(méi)有開(kāi)啟webhook

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

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

這時(shí)候再來(lái)添加webhooks就能添加了

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

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

這時(shí)候代碼push的時(shí)候,Jenkins也會(huì)自動(dòng)構(gòu)建

如果沒(méi)有報(bào)錯(cuò)就說(shuō)明構(gòu)建成功了

部署前端項(xiàng)目

打開(kāi)前端項(xiàng)目

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

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

添加Dockerfile

# 使用nginx鏡像來(lái)部署
FROM nginx:1.26.2
# 解決文件名亂碼問(wèn)題
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 {
        // 項(xiàng)目名稱
        APP_NAME = 'ruiyi-ui'
        // 端口
        APP_PORT = 9801
    }
    stages {
        stage('build') {
            steps {
                script {
                    // 進(jìn)行打包
                    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
                    """
                }
            }
        }
    }
}

檢查一下有沒(méi)有這幾個(gè)文件

提交代碼

Jenkins再新建一個(gè)項(xiàng)目

和剛剛一樣,勾上

生成Secret token

設(shè)置gitlab倉(cāng)庫(kù)地址

 gitlab中webhooks配置

添加一個(gè)webhook

然后push代碼

等待Jenkins構(gòu)建

構(gòu)建成功

我們到瀏覽器看一下吧

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

相關(guān)文章

  • 如何隔離docker容器中的用戶的方法

    如何隔離docker容器中的用戶的方法

    這篇文章主要介紹了如何隔離docker容器中的用戶的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Docker安裝部署Neo4j的保姆級(jí)教程

    Docker安裝部署Neo4j的保姆級(jí)教程

    本文主要介紹了Docker安裝部署Neo4j的保姆級(jí)教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • docker容器指定主機(jī)同網(wǎng)段方式

    docker容器指定主機(jī)同網(wǎng)段方式

    文章介紹了如何使用Docker的macvlan網(wǎng)絡(luò)模式,讓容器直接連接到物理網(wǎng)絡(luò),提高網(wǎng)絡(luò)性能和穩(wěn)定性,同時(shí),也提供了創(chuàng)建、綁定、配置和解除容器網(wǎng)絡(luò)的相關(guān)命令
    2025-12-12
  • 利用docker搭建LAMP運(yùn)行環(huán)境教程詳解

    利用docker搭建LAMP運(yùn)行環(huán)境教程詳解

    LAMP相信對(duì)大家來(lái)說(shuō)都不陌生, Docker是一個(gè)開(kāi)源的引擎,可以輕松的為任何應(yīng)用創(chuàng)建一個(gè)輕量級(jí)的、可移植的、自給自足的容器,所以這篇文章給大家介紹利用docker快速搭建LAMP運(yùn)行環(huán)境的方法,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-10-10
  • IDEA通過(guò)Docker插件部署SpringBoot項(xiàng)目的過(guò)程詳解

    IDEA通過(guò)Docker插件部署SpringBoot項(xiàng)目的過(guò)程詳解

    在idea中如何通過(guò)Docker插件部署SpringBoot項(xiàng)目呢?很多朋友在配置過(guò)程中走了很多誤區(qū),今天小編給大家分享一篇教程關(guān)于IDEA通過(guò)Docker插件部署SpringBoot項(xiàng)目的過(guò)程,感興趣的朋友一起看看吧
    2021-11-11
  • 如何解決docker容器訪問(wèn)不了外部網(wǎng)絡(luò)問(wèn)題

    如何解決docker容器訪問(wèn)不了外部網(wǎng)絡(luò)問(wèn)題

    介紹了Docker?bridge網(wǎng)絡(luò)的工作原理,包括虛擬網(wǎng)橋的創(chuàng)建、容器的IP地址分配、IP轉(zhuǎn)發(fā)的作用以及NAT的配置,通過(guò)配置IP轉(zhuǎn)發(fā)和NAT規(guī)則,Docker能夠?qū)崿F(xiàn)容器與外部網(wǎng)絡(luò)之間的通信,文章還提供了解決某個(gè)具體問(wèn)題的步驟
    2024-11-11
  • docker部署ES集群的實(shí)現(xiàn)

    docker部署ES集群的實(shí)現(xiàn)

    本文介紹了如何在Ubuntu20.04.2 LTS環(huán)境下通過(guò)Docker部署Elasticsearch7.10.1集群,詳細(xì)步驟包括從Docker鏡像倉(cāng)庫(kù)拉取Elasticsearch鏡像,創(chuàng)建文件映射目錄,運(yùn)行Docker容器,配置Elasticsearch的端口和權(quán)限,以及集群的相關(guān)設(shè)置,感興趣的可以了解一下
    2024-10-10
  • Docker網(wǎng)絡(luò)配置從基礎(chǔ)到高級(jí)實(shí)踐的完全指南

    Docker網(wǎng)絡(luò)配置從基礎(chǔ)到高級(jí)實(shí)踐的完全指南

    Docker?網(wǎng)絡(luò)系統(tǒng)允許容器之間、容器與主機(jī)以及外部網(wǎng)絡(luò)進(jìn)行安全可控的通信,理解?Docker?網(wǎng)絡(luò)是構(gòu)建可靠容器化應(yīng)用的關(guān)鍵,下面我們就來(lái)看看Docker基礎(chǔ)網(wǎng)絡(luò)配置和高級(jí)網(wǎng)絡(luò)配置的具體方法吧
    2025-05-05
  • 基于windows10安裝docker及遇到的問(wèn)題

    基于windows10安裝docker及遇到的問(wèn)題

    這篇文章主要介紹了基于windows10安裝docker及遇到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Linux中使用Docker構(gòu)建Nginx容器的詳細(xì)攻略

    Linux中使用Docker構(gòu)建Nginx容器的詳細(xì)攻略

    Nginx是一款廣泛使用的高性能 Web 服務(wù)器和反向代理服務(wù)器,適用于各種場(chǎng)景,如靜態(tài)文件服務(wù)、負(fù)載均衡和 API 網(wǎng)關(guān)等,在本教程中,我們將詳細(xì)介紹如何在 Docker 中構(gòu)建并運(yùn)行一個(gè) Nginx 容器,幫助開(kāi)發(fā)者快速搭建和管理 Nginx 服務(wù),感興趣的朋友跟隨小編一起看看吧
    2025-12-12

最新評(píng)論

苗栗市| 永善县| 界首市| 张北县| 长岛县| 余干县| 灵宝市| 赣州市| 浦江县| 嘉荫县| 邢台市| 南皮县| 峨山| 兴安盟| 桦川县| 香港| 北流市| 普兰县| 武鸣县| 南岸区| 太仓市| 扎囊县| 陈巴尔虎旗| 嘉鱼县| 崇礼县| 商丘市| 隆林| 玛多县| 灵山县| 庄河市| 六枝特区| 龙江县| 雷波县| 宁蒗| 高密市| 南溪县| 阳原县| 信阳市| 达孜县| 泾源县| 昌邑市|