文档完善

This commit is contained in:
macro
2019-11-21 14:33:00 +08:00
parent 3d1e30015c
commit 5ee352adec
22 changed files with 185 additions and 90 deletions

View File

@@ -103,17 +103,9 @@ nginx | 1.10 | http://nginx.org/en/download.html
- `mall-admin-web`项目的安装及部署请参考:[mall前端项目的安装与部署](https://github.com/macrozheng/mall-learning/blob/master/docs/deploy/mall_deploy_web.md)
- 如果想使用`Consul`作为注册及配置中心的话请参考:[Spring Cloud Consul服务治理与配置中心](https://juejin.im/post/5db05582f265da4d4c20180f)
- 如果想使用`Nacos`作为注册及配置中心的话请参考:[Spring Cloud AlibabaNacos 作为注册中心和配置中心使用](https://juejin.im/post/5dcbf7bc5188250d1f5a78ea)
- `分布式事务`解决方案请参考:[]()
- `分布式事务`解决方案请参考:[使用Seata彻底解决Spring Cloud中的分布式事务问题](https://juejin.im/post/5dd53a9d5188255d35425a08)
- `ELK`日志收集系统的搭建请参考:[SpringBoot应用整合ELK实现日志收集](https://github.com/macrozheng/mall-learning/blob/master/docs/technology/mall_tiny_elk.md)
> Docker环境部署
- 在VirtualBox或其他环境中安装CenterOs7.6;
- Docker环境的安装请参考[开发者必备Docker命令](https://github.com/macrozheng/mall-learning/blob/master/docs/reference/docker.md)
- 本项目Docker镜像构建请参考[使用Maven插件为SpringBoot应用构建Docker镜像](https://github.com/macrozheng/mall-learning/blob/master/docs/reference/docker_maven.md)
- 本项目在Docker容器下的部署请参考[mall在Linux环境下的部署基于Docker容器](https://github.com/macrozheng/mall-learning/blob/master/docs/deploy/mall_deploy_docker.md)
- 本项目使用Docker Compose请参考 [mall在Linux环境下的部署基于Docker Compose](https://github.com/macrozheng/mall-learning/blob/master/docs/deploy/mall_deploy_docker_compose.md)。
## 公众号
mall项目全套学习教程连载中**关注公众号**第一时间获取。

View File

@@ -1,10 +1,48 @@
# mall-swarm 在Linux环境下的部署
# 如何在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)
## 应用部署
##3 部署mall-registry
### 部署mall-registry
- 通过以下命令运行注册中心`mall-registry`
```bash
docker run -p 8001:8001 --name mall-registry \
@@ -13,8 +51,12 @@ docker run -p 8001:8001 --name mall-registry \
-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 \
@@ -23,79 +65,9 @@ docker run -p 8301:8301 --name mall-config \
-d mall/mall-config:1.0-SNAPSHOT
```
### 部署mall-monitor
- 运行成功后,通过访问该地址可以查看`mall-admin`在prod环境下的配置信息http://192.168.6.132:8301/master/admin-prod.yml
```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
```
### 部署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
```
### 部署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-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-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-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-common`、`mall-mbg`或`mall-security`的情况需要先按顺序将这些模块install到本地maven仓库再进行打包
- prod环境下从配置中心获取的是存储在git仓库中的配置如需更改需要将mall-config模块的配置文件application.yml中的git仓库配置改为你自己的
- 需要`注意`的是prod环境下从配置中心获取的是存储在git仓库中的配置如需更改需要将mall-config模块的配置文件application.yml中的git仓库配置改为你自己的。
```yaml
spring:
@@ -110,21 +82,123 @@ spring:
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
- 官网地址https://github.com/portainer/portainer
### 安装
- 拉取镜像文件:
- 获取Docker镜像文件
```bash
docker pull portainer/portainer
```
- 使用docker容器运行运行portainer
- 使用docker容器运行Portainer
```bash
docker run -p 9000:9000 -p 8000:8000 --name portainer \
@@ -132,4 +206,33 @@ docker run -p 9000:9000 -p 8000:8000 --name portainer \
-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)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 22 KiB