mall-swarm微服務電商系統如何部署?用Jenkins自動化部署是真的香!


摘要

之前對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-adminmall-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項目的自動化部署工作,這樣當我們每次修改完代碼后,只需點擊啟動任務,就可以實現一鍵打包部署,省去了頻繁打包部署的麻煩。

項目地址

github.com/macrozheng/…


作者:MacroZheng
鏈接:https://juejin.im/post/6893668816677502989
來源:掘金
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM