细述mall-swarm通过docker搭建过程

阅读公众号作者macrozheng的文章:http://www.macrozheng.com/#/deploy/mall_swarm_deploy_docker

结合自己本地搭建后台各模块的实际操作,进行记录与说明

背景

1、基于docker进行本地后端的搭建,docker未建私服,直接使用docker-hub;

2、部分基础组件在虚已经拟机上面通过非docker镜像方式安装:具体涉及MySQL、Redis、Mongo、Elasticsearch

3、下载源码:git clone https://github.com/macrozheng/mall-swarm

镜像构建

前置工作:修改配置

主要涉及pom.xml及application.yml文件相关配置

(1)修改docker监听IP及端口

grep -rn docker.host ./

sed -i 's/192.168.6.132:2375/127.0.0.1:2375/g' pom.xml

换言之:Docker已经开启远程API的情况下,才能镜像上述操作

(2)修改镜像名前缀为自己docker-hub下的账号:将imageName>mall替换为imageName>docker_hub_account/mall

grep -rn imageName ./ -l | xargs sed -i 's/imageName>mall/imageName>docker_hub_account/mall/g'

换言之:docker_hub_account字符串替换为您的docker-hub账号

(3)将localhost改为静态IP(可选,由于本人虚拟机环境习惯用静态IP)

grep -rn localhost ./ -l | xargs sed -i 's/localhost/static_ip/g'

换言之:static_ip替换为你的静态IP地址

(4)账号、库表的创建、授权等

针对mysql:执行mall.sql创建库表并插入少量数据(注意设置账号及权限)

针对rabbitmq:需要提前创建账号mall、密码mall,virtual-host:/mall,也可变更为其他,但是需要同步修改mall-portal模块下application.yml下rabbitmq相关配置信息

(5)针对es出现频繁gc的情况,可能需要重新设置启动参数及gc策略,具体视机器运行状况去看,具体操作包含两种途径:

途径1:附加elasticsearch.yml文件替换原来容器中的elasticsearch.yml文件

途径2:修改document/docker/docker-compose-env.yml中elasticsearch的environment相关信息

(6)由于使用插件:docker-maven-plugin进行镜像构建及上传docker-hub,需要在pom.xml里设置goals除了build还包含push

构建镜像

运行mvn clean package 打包镜像并push到docker-hub上面,具体覆盖 mall-admin、  mall-config、 mall-demo、mall-gateway 、mall-monitor 、mall-portal 、mall-registry mall-search这8个模块镜像,如果中间过程出现个别模块配置重新修改后构建镜像,直接运行:mvn install -pl mall-security -am -amd,会将依赖它的其他模块也一并重新构建了,mall-security替换成其他具体的模块名

运行容器

前置工作:修改脚本

主要修改mall-swarm/document/sh目录下各docker-compose.yml中拉取的镜像名字及挂载路径

针对mall-swarm相关组件的启动:

(1) 将volume的挂载路径/mydata/app转变为自己的挂载路径:如/home/win/docker-app/mallswarm

grep -rn /mydata/app ./ -l | xargs sed -i 's/\/mydata\/app/\/home\/win\/docker-app\/mallswarm/g'

(2) 将镜像名字进行批量替换,即将mall/${app_name}替换为docker_hub_account/mall:${app_name}

 grep -rn mall/\${app_name}: ./ -l | xargs sed -i 's/mall\/\${app_name}:/docker_hub_account/mall:\${app_name}/g'

(3) 在启动脚本中添加,--net=docker_default配置,避免无法访问基础组件的情况

(4) 预先创建挂载路径的脚本,将相关目录及文件准备好, 具体参见:《mall-swarm之基础组件挂载路径批量创建》

(5) 执行docker-compose -f docker-compose-env.yml -d,待服务mysql、redis、mongo、rabbitmq、elasticsearch、kibana正常启动,中间过程存在问题可参见《执行docker-compose-env.yml脚本》,默认使用了桥接方式创建网络docker_default

(6) 按顺序启动相关脚本:

./mall-registry.sh  注册中心:默认端口8001

./mall-config.sh 配置中心:默认端口8301

./mall-monitor.sh 监控中心:默认端口8101

./mall-gateway.sh 网关服务:默认端口8201

./mall-admin.sh 后台管理:默认端口8180

./mall-search.sh 后台搜索服务:默认端口8081

./mall-portal.sh 网关服务:默认端口8085

./mall-demo.sh demo示例:默认端口8082

后端的服务入口mall-admin拼接具体服务请求路径,

如请求登录用户信息对应http://XX.XX.XX.XX:8201/mall-admin/admin/info

你可能感兴趣的:(细述mall-swarm通过docker搭建过程)