本文以mall-swarm
项目为例,主要介绍一个微服务架构的电商项目如何在Docker容器下部署,涉及到大量系统组件的部署及多个Spring Cloud 微服务应用的部署,基于CentOS7.6。
环境搭建
基础环境部署
mall-swarm
运行需要的系统组件如下,Docker容器中安装这些组件的方法直接参考该文章即可:mall在Linux环境下的部署(基于Docker容器) 。
组件 |
版本号 |
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-common
、mall-mbg
或mall-security
的情况,需要先按顺序将这些模块install到本地maven仓库再进行打包。
应用 |
版本号 |
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仓库镜像示意图:
应用部署
部署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
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
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
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
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
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
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
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
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容器中的应用。
docker pull portainer/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
项目地址
https://github.com/macrozheng/mall-swarm
推荐阅读
欢迎关注,点个在看