Files
mall-swarm/document/reference/deploy_linux.md
2019-11-21 14:33:00 +08:00

239 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 如何在Docker容器中部署整套基于Spring Cloud的微服务架构
> 本文以`mall-swarm`项目为例主要介绍一个微服务架构的电商项目如何在Docker容器下部署涉及到大量系统组件的部署及多个Spring Cloud 微服务应用的部署基于CentOS7.6。
## 环境搭建
### 基础环境部署
> `mall-swarm`运行需要的系统组件如下Docker容器中安装这些组件的方法直接参考该文章即可[mall在Linux环境下的部署基于Docker容器](https://mp.weixin.qq.com/s/0fVMK107i5bBq8kGQqg8KA) 。
| 组件 | 版本号 |
| ------------- | ------ |
| 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镜像](https://mp.weixin.qq.com/s/q2KDzHbPkf3Q0EY8qYjYgw) 。
需要注意的是如果打包过程中遇到找不到`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仓库镜像示意图
![](../resource/mall_swarm_linux_10.png)
## 应用部署
### 部署mall-registry
- 通过以下命令运行注册中心`mall-registry`
```bash
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
```
- 运行成功后通过访问该地址可以查看注册中心控制台http://192.168.6.132:8001/
### 部署mall-config
- 通过以下命令运行配置中心`mall-config`
```bash
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.yml
- 需要`注意`的是prod环境下从配置中心获取的是存储在git仓库中的配置如需更改需要将mall-config模块的配置文件application.yml中的git仓库配置改为你自己的。
```yaml
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`
```bash
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
```
- 运行完成后可以通过该地址查看监控中心信息,账号密码为`macro:123456`http://192.168.6.132:8101
### 部署mall-gateway
- 通过以下命令运行网关服务`mall-gateway`
```bash
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
```
- 运行完成后可以通过该地址查看动态路由规则http://192.168.6.132:8201/actuator/gateway/routes
### 部署mall-admin
- 通过以下命令运行后台服务`mall-admin`
```bash
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-gateway`网关服务访问接口文档http://192.168.6.132:8201/mall-admin/swagger-ui.html
### 部署mall-portal
- 通过以下命令运行前台服务`mall-portal`
```bash
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-gateway`网关服务访问接口文档http://192.168.6.132:8201/mall-portal/swagger-ui.html
### 部署mall-search
- 通过以下命令运行搜索服务`mall-search`
```bash
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-gateway`网关服务访问接口文档http://192.168.6.132:8201/mall-search/swagger-ui.html
### 部署mall-demo
- 通过以下命令运行测试服务`mall-demo`
```bash
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
```
- 通过`mall-gateway`网关服务访问接口文档http://192.168.6.132:8201/mall-demo/swagger-ui.html
## 运行完成效果展示
- 注册中心控制台信息:
![](../resource/mall_swarm_linux_07.png)
- 监控中心应用信息:
![](../resource/mall_swarm_linux_08.png)
![](../resource/mall_swarm_linux_09.png)
## 可视化管理工具
> Portainer 是一款轻量级的应用它提供了图形化界面用于方便的管理Docker环境包括单机环境和集群环境下面我们将用Portainer来管理Docker容器中的应用。
- 官网地址https://github.com/portainer/portainer
- 获取Docker镜像文件
```bash
docker pull portainer/portainer
```
- 使用docker容器运行Portainer
```bash
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信息
![](../resource/mall_swarm_linux_01.png)
- 查看所有运行中的容器信息:
![](../resource/mall_swarm_linux_02.png)
- 查看所有已经下载的Docker镜像
![](../resource/mall_swarm_linux_03.png)
- 查看`mall-portal`应用的统计信息:
![](../resource/mall_swarm_linux_04.png)
- 查看`mall-portal`应用的运行过程中打印的日志信息:
![](../resource/mall_swarm_linux_05.png)
- 进入`mall-portal`应用的容器内部来操作容器内部系统:
![](../resource/mall_swarm_linux_06.png)