摘要
之前對mall-swarm
項目做了升級,注冊中心和配置中心都改為使用Nacos,但是Jenkins的自動化部署文檔一直都沒更新。有些朋友參考原來的文檔部署有點小問題,這次對mall-swarm
的自動化部署文檔做個升級,希望對大家有所幫助!
Jenkins的基本使用
使用該部署方案需要對Jenkins有所了解,關於Jenkins的基本使用可以參考:《使用Jenkins一鍵打包部署SpringBoot應用,就是這么6!》
部署准備
部署之前需要先安裝
mall-swarm
需要的依賴服務,並打包好所有應用的Docker鏡像。由於之前已經寫過相關教程,這里只提示下關鍵的步驟,具體可以參考《mall-swarm在Linux環境下的部署(基於Docker容器)》,文檔地址:http://www.macrozheng.com/#/deploy/mall_swarm_deploy_docker 。
- 需要安裝好項目所需的依賴服務,直接使用
Docker Compose
安裝即可,具體服務和版本信息如下;
組件 | 版本號 |
---|---|
Mysql | 5.7 |
Redis | 5.0 |
MongoDb | 4.3.5 |
RabbitMq | 3.7.15 |
Nginx | 1.10 |
Elasticsearch | 7.6.2 |
Logstash | 7.6.2 |
Kibana | 7.6.2 |
Nacos | 1.3.0 |
- 打包好所有SpringBoot應用的Docker鏡像,具體應用服務信息如下;
應用 | 說明 |
---|---|
mall-monitor | 監控中心 |
mall-gateway | 微服務網關 |
mall-auth | 認證中心 |
mall-admin | 商城后台服務 |
mall-portal | 商城前台服務 |
mall-search | 商城搜索服務 |
- 將應用所有配置添加到Nacos注冊中心中去,具體配置文件如下。
執行腳本准備
Jenkins自動化部署是需要依賴Linux執行腳本的,我們先把需要執行的腳本准備好。
- 腳本文件都存放在了
mall-swarm
項目的/document/sh
目錄下:
- 上傳腳本前在IDEA中修改所有腳本文件的換行符格式為
LF
,否則腳本會無法執行;
- 將所有腳本文件上傳到指定目錄,這里我們上傳到
/mydata/sh
目錄下;
- 將所有腳本文件都修改為可執行文件:
chmod +x ./mall-*
復制代碼
Jenkins中創建任務
接下來我們將通過在Jenkins中創建任務來實現自動化部署。由於我們的
mall-swarm
是個多模塊的項目,部署上面和曾經的單模塊項目還是有所區別的。
mall-admin
由於各個模塊執行任務的創建都大同小異,下面將詳細講解
mall-admin
模塊任務的創建,其他模塊將簡略講解。
- 首先我們選擇
構建一個自由風格的軟件項目
,然后輸入任務名稱為mall-admin
,配置其Git倉庫地址,這里我直接使用了Gitee上面的地址:
- 之后我們創建一個構建,構建
mall-swarm
項目中的依賴模塊,否則當構建可運行的服務模塊時會因為無法找到這些模塊而構建失敗;
# 只install mall-common,mall-mbg兩個模塊 clean install -pl mall-common,mall-mbg -am 復制代碼
- 依賴模塊構建示意圖:
- 再創建一個構建,單獨構建並打包
mall-admin
模塊:
- 再創建一個構建,通過SSH去執行
sh
腳本,這里執行的是mall-admin
的運行腳本:
- 點擊保存,完成mall-admin的執行任務創建。
mall-gateway
mall-gateway
和其他模塊與mall-admin
的創建任務方式基本一致,只需修改構建模塊時的pom.xml
文件位置和執行腳本
位置即可。
- 我們可以直接從
mall-admin
模塊的任務復制一個過來創建:
- 修改第二個構建中的
pom.xml
文件位置,改為:${WORKSPACE}/mall-gateway/pom.xml
- 修改第三個構建中的SSH執行腳本文件位置,改為:
/mydata/sh/mall-gateway.sh
- 點擊保存,完成mall-gateway的執行任務創建。
其他模塊
其他模塊的執行任務創建,參考mall-admin
和mall-gateway
的創建即可。
任務創建完成
Docker網絡問題
如果之前使用的是
Docker Compose
啟動所有依賴服務,會默認創建一個網絡,所有的依賴服務都會在此網絡之中,不同網絡內的服務無法互相訪問。我這里創建的網絡是deploy_default
,所以需要指定sh
腳本中服務運行的的網絡,否則啟動的應用服務會無法連接到依賴服務。
- 可以使用
docker inspect mysql
命令來查看mysql服務所在的網絡;
- 也可以通過
docker network ls
來查看所有網絡;
[root@local-linux ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 59b309a5c12f bridge bridge local 3a6f76a8920d deploy_default bridge local ef34fe69992b host host local a65be030c632 none 復制代碼
- 修改所有
sh
腳本,修改服務運行的網絡,添加一行--network deploy_default \
即可。
模塊啟動順序問題
由於作為注冊中心和配置中心的Nacos已經啟動了,其他模塊基本沒有啟動順序的限制,但是最好還是按照下面的順序啟動。
推薦啟動順序:
- mall-auth
- mall-gateway
- mall-monitor
- mall-admin
- mall-portal
- mall-search
運行完成效果展示
- 查看API文檔信息,訪問地址:http://192.168.3.101:8201/doc.html
- 查看注冊中心注冊服務信息,訪問地址:http://192.168.3.101:8848/nacos/
- 監控中心應用信息,訪問地址:http://192.168.3.101:8101
- 日志收集系統信息,訪問地址:http://192.168.3.101:5601
總結
我們通過在Jenkins中創建任務,完成了mall-swarm
項目的自動化部署工作,這樣當我們每次修改完代碼后,只需點擊啟動任務,就可以實現一鍵打包部署,省去了頻繁打包部署的麻煩。
項目地址
作者:MacroZheng
鏈接:https://juejin.im/post/6893668816677502989
來源:掘金
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。