阅读公众号作者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
网友评论