本文以 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 复制代码
运行成功后,通过访问该地址可以查看 mall-admin
在prod环境下的配置信息: http://192.168.6.132:8301/master/admin-prod.yml
需要 注意
的是prod环境下从配置中心获取的是存储在git仓库中的配置,如需更改需要将mall-config模块的配置文件application.yml中的git仓库配置改为你自己的。
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 复制代码
macro:123456
: http://192.168.6.132:8101 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-gateway
网关服务访问接口文档: http://192.168.6.132:8201/mall-admin/swagger-ui.html 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-gateway
网关服务访问接口文档: http://192.168.6.132:8201/mall-portal/swagger-ui.html 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-gateway
网关服务访问接口文档: http://192.168.6.132:8201/mall-search/swagger-ui.html 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 复制代码
mall-gateway
网关服务访问接口文档: http://192.168.6.132:8201/mall-demo/swagger-ui.html Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便的管理Docker环境,包括单机环境和集群环境,下面我们将用Portainer来管理Docker容器中的应用。
官网地址: github.com/portainer/p…
获取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 复制代码
mall-portal
应用的统计信息: mall-portal
应用的运行过程中打印的日志信息: mall-portal
应用的容器内部来操作容器内部系统: