在Docker容器中部署整套基於SpringCloud的微服務架構,看這篇就對了!

摘要

本文以mall-swarm項目爲例,主要介紹一個微服務架構的電商項目如何在Docker容器下部署,涉及到大量系統組件的部署及多個Spring Cloud 微服務應用的部署,基於CentOS7.6。html

環境搭建

基礎環境部署

mall-swarm運行須要的系統組件以下,Docker容器中安裝這些組件的方法直接參考該文章便可:mall在Linux環境下的部署(基於Docker容器)mysql

組件 版本號
JDK 1.8
Mysql 5.7
Redis 3.2
Elasticsearch 6.4.0
MongoDb 3.2
RabbitMq 3.7.15
Nginx 1.10

鏡像打包上傳

一共8個應用服務須要打包成Docker鏡像,具體如何打包能夠參考使用Maven插件構建Docker鏡像 。 須要注意的是若是打包過程當中遇到找不到mall-commonmall-mbgmall-security的狀況,須要先按順序將這些模塊install到本地maven倉庫再進行打包。git

應用 版本號
mall-registry 1.8
mall-config 5.7
mall-monitor 3.2
mall-gateway 6.4.0
mall-admin 3.2
mall-portal 3.7.15
mall-search 1.10
mall-demo 1.10

鏡像打包上傳完成後,完整docker倉庫鏡像示意圖:github

應用部署

部署mall-registry

  • 經過如下命令運行註冊中心mall-registry
docker run -p 8001:8001 --name mall-registry \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/mall-registry/logs:/var/logs \
-d mall/mall-registry:1.0-SNAPSHOT
複製代碼

部署mall-config

  • 經過如下命令運行配置中心mall-config
docker run -p 8301:8301 --name mall-config \
--link mall-registry:mall-registry \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/mall-config/logs:/var/logs \
-d mall/mall-config:1.0-SNAPSHOT
複製代碼
  • 運行成功後,經過訪問該地址能夠查看mall-admin在prod環境下的配置信息:http://192.168.6.132:8301/master/admin-prod.ymlredis

  • 須要注意的是prod環境下從配置中心獲取的是存儲在git倉庫中的配置,如需更改須要將mall-config模塊的配置文件application.yml中的git倉庫配置改成你本身的。spring

spring:
 cloud:
 config:
 server:
 git: #Git倉庫存儲
 uri: https://gitee.com/macrozheng/mall-config.git #改成你本身的配置
 username: macro
 password: 123456
 clone-on-start: true
 search-paths: '{application}'
複製代碼

部署mall-monitor

  • 經過如下命令運行監控中心mall-monitor
docker run -p 8101:8101 --name mall-monitor \
--link mall-registry:mall-registry \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/mall-monitor/logs:/var/logs \
-d mall/mall-monitor:1.0-SNAPSHOT
複製代碼

部署mall-gateway

  • 經過如下命令運行網關服務mall-gateway
docker run -p 8201:8201 --name mall-gateway \
--link mall-registry:mall-registry \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/mall-gateway/logs:/var/logs \
-d mall/mall-gateway:1.0-SNAPSHOT
複製代碼

部署mall-admin

  • 經過如下命令運行後臺服務mall-admin
docker run -p 8180:8180 --name mall-admin \
--link mysql:db \
--link mall-registry:mall-registry \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/mall-admin/logs:/var/logs \
-d mall/mall-admin:1.0-SNAPSHOT
複製代碼

部署mall-portal

  • 經過如下命令運行前臺服務mall-portal
docker run -p 8085:8085 --name mall-portal \
--link mysql:db \
--link redis:redis \
--link mongo:mongo \
--link rabbitmq:rabbit \
--link mall-registry:mall-registry \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/mall-portal/logs:/var/logs \
-d mall/mall-portal:1.0-SNAPSHOT
複製代碼

部署mall-search

  • 經過如下命令運行搜索服務mall-search
docker run -p 8081:8081 --name mall-search \
--link mysql:db \
--link elasticsearch:es \
--link mall-registry:mall-registry \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/mall-search/logs:/var/logs \
-d mall/mall-search:1.0-SNAPSHOT
複製代碼

部署mall-demo

  • 經過如下命令運行測試服務mall-demo
docker run -p 8082:8082 --name mall-demo \
--link mysql:db \
--link mall-registry:mall-registry \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/mall-demo/logs:/var/logs \
-d mall/mall-demo:1.0-SNAPSHOT
複製代碼

運行完成效果展現

  • 註冊中心控制檯信息:

  • 監控中心應用信息:

可視化管理工具

Portainer 是一款輕量級的應用,它提供了圖形化界面,用於方便的管理Docker環境,包括單機環境和集羣環境,下面咱們將用Portainer來管理Docker容器中的應用。sql

docker pull portainer/portainer
複製代碼
  • 使用docker容器運行Portainer:
docker run -p 9000:9000 -p 8000:8000 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /mydata/portainer/data:/data \
-d portainer/portainer
複製代碼
  • 查看Portainer的DashBoard信息:

  • 查看全部運行中的容器信息:

  • 查看全部已經下載的Docker鏡像:

  • 查看mall-portal應用的統計信息:

  • 查看mall-portal應用的運行過程當中打印的日誌信息:

  • 進入mall-portal應用的容器內部來操做容器內部系統:

項目地址

github.com/macrozheng/…架構

公衆號

mall項目全套學習教程連載中,關注公衆號第一時間獲取。

公衆號圖片
相關文章
相關標籤/搜索