diff --git a/README.md b/README.md index 59f87f3..0d7654d 100644 --- a/README.md +++ b/README.md @@ -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 Alibaba:Nacos 作为注册中心和配置中心使用](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项目全套学习教程连载中,**关注公众号**第一时间获取。 diff --git a/document/reference/deploy_linux.md b/document/reference/deploy_linux.md index c50004b..6c91d8d 100644 --- a/document/reference/deploy_linux.md +++ b/document/reference/deploy_linux.md @@ -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 -``` \ No newline at end of file +``` + +- 查看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) + + + + + diff --git a/document/resource/mall_swarm_linux_01.png b/document/resource/mall_swarm_linux_01.png index d753eb7..34eaf60 100644 Binary files a/document/resource/mall_swarm_linux_01.png and b/document/resource/mall_swarm_linux_01.png differ diff --git a/document/resource/mall_swarm_linux_02.png b/document/resource/mall_swarm_linux_02.png index 1142969..970955c 100644 Binary files a/document/resource/mall_swarm_linux_02.png and b/document/resource/mall_swarm_linux_02.png differ diff --git a/document/resource/mall_swarm_linux_03.png b/document/resource/mall_swarm_linux_03.png index 8fb9d73..45677a1 100644 Binary files a/document/resource/mall_swarm_linux_03.png and b/document/resource/mall_swarm_linux_03.png differ diff --git a/document/resource/mall_swarm_linux_04.png b/document/resource/mall_swarm_linux_04.png index 9d8ebfa..471974a 100644 Binary files a/document/resource/mall_swarm_linux_04.png and b/document/resource/mall_swarm_linux_04.png differ diff --git a/document/resource/mall_swarm_linux_05.png b/document/resource/mall_swarm_linux_05.png index 5ee1db7..c819f7d 100644 Binary files a/document/resource/mall_swarm_linux_05.png and b/document/resource/mall_swarm_linux_05.png differ diff --git a/document/resource/mall_swarm_linux_06.png b/document/resource/mall_swarm_linux_06.png index 0cb4c0b..01a4b31 100644 Binary files a/document/resource/mall_swarm_linux_06.png and b/document/resource/mall_swarm_linux_06.png differ diff --git a/document/resource/mall_swarm_linux_07.png b/document/resource/mall_swarm_linux_07.png index 58eb5c7..45bf959 100644 Binary files a/document/resource/mall_swarm_linux_07.png and b/document/resource/mall_swarm_linux_07.png differ diff --git a/document/resource/mall_swarm_linux_08.png b/document/resource/mall_swarm_linux_08.png index a84eaf3..6b7c8b1 100644 Binary files a/document/resource/mall_swarm_linux_08.png and b/document/resource/mall_swarm_linux_08.png differ diff --git a/document/resource/mall_swarm_linux_09.png b/document/resource/mall_swarm_linux_09.png index 1164b12..14961fc 100644 Binary files a/document/resource/mall_swarm_linux_09.png and b/document/resource/mall_swarm_linux_09.png differ diff --git a/document/resource/mall_swarm_linux_10.png b/document/resource/mall_swarm_linux_10.png new file mode 100644 index 0000000..7a7e462 Binary files /dev/null and b/document/resource/mall_swarm_linux_10.png differ diff --git a/document/resource/mall_swarm_windows_01.png b/document/resource/mall_swarm_windows_01.png index ffe7329..60a78b2 100644 Binary files a/document/resource/mall_swarm_windows_01.png and b/document/resource/mall_swarm_windows_01.png differ diff --git a/document/resource/mall_swarm_windows_02.png b/document/resource/mall_swarm_windows_02.png index 34d55b9..5382157 100644 Binary files a/document/resource/mall_swarm_windows_02.png and b/document/resource/mall_swarm_windows_02.png differ diff --git a/document/resource/mall_swarm_windows_03.png b/document/resource/mall_swarm_windows_03.png index f49cc2d..a8e9475 100644 Binary files a/document/resource/mall_swarm_windows_03.png and b/document/resource/mall_swarm_windows_03.png differ diff --git a/document/resource/mall_swarm_windows_04.png b/document/resource/mall_swarm_windows_04.png index f148830..d214b10 100644 Binary files a/document/resource/mall_swarm_windows_04.png and b/document/resource/mall_swarm_windows_04.png differ diff --git a/document/resource/mall_swarm_windows_05.png b/document/resource/mall_swarm_windows_05.png index 8ec09fd..349db31 100644 Binary files a/document/resource/mall_swarm_windows_05.png and b/document/resource/mall_swarm_windows_05.png differ diff --git a/document/resource/mall_swarm_windows_06.png b/document/resource/mall_swarm_windows_06.png index eaccc7c..57417e0 100644 Binary files a/document/resource/mall_swarm_windows_06.png and b/document/resource/mall_swarm_windows_06.png differ diff --git a/document/resource/mall_swarm_windows_07.png b/document/resource/mall_swarm_windows_07.png index f4576ad..b9326b0 100644 Binary files a/document/resource/mall_swarm_windows_07.png and b/document/resource/mall_swarm_windows_07.png differ diff --git a/document/resource/mall_swarm_windows_08.png b/document/resource/mall_swarm_windows_08.png index dc80615..3557bab 100644 Binary files a/document/resource/mall_swarm_windows_08.png and b/document/resource/mall_swarm_windows_08.png differ diff --git a/document/resource/mall_swarm_windows_09.png b/document/resource/mall_swarm_windows_09.png index 8793b96..2e4da8b 100644 Binary files a/document/resource/mall_swarm_windows_09.png and b/document/resource/mall_swarm_windows_09.png differ diff --git a/document/resource/mall_swarm_windows_10.png b/document/resource/mall_swarm_windows_10.png index 042f70a..8725924 100644 Binary files a/document/resource/mall_swarm_windows_10.png and b/document/resource/mall_swarm_windows_10.png differ