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
來源:掘金
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章