之前对
mall-swarm
我的项目做了降级,注册核心和配置核心都改为应用 Nacos,然而 Jenkins 的自动化部署文档始终都没更新。有些敌人参考原来的文档部署有点小问题,这次对mall-swarm
的自动化部署文档做个降级,心愿对大家有所帮忙!
SpringCloud 实战电商我的项目 mall-swarm(5.1k+star)地址:https://github.com/macrozheng/mall-swarm
Jenkins 的根本应用
应用该部署计划须要对 Jenkins 有所理解,对于 Jenkins 的根本应用能够参考:《应用 Jenkins 一键打包部署 SpringBoot 利用,就是这么 6!》
部署筹备
部署之前须要先装置
mall-swarm
须要的依赖服务,并打包好所有利用的 Docker 镜像。因为之前曾经写过相干教程,这里只提醒下要害的步骤,具体能够参考《mall-swarm 在 Linux 环境下的部署(基于 Docker 容器)》,文档地址:http://www.macrozheng.com/#/d…。
- 须要装置好我的项目所需的依赖服务,间接应用
Docker Compose
装置即可,具体服务和版本信息如下;
组件 | 版本号 |
---|---|
Mysql | 5.7 |
Redis | 5.0 |
MongoDb | 4.3.5 |
RabbitMq | 3.7.15 |
Nginx | 1.10 |
Elasticsearch | 7.6.2 |
Logstash | 7.6.2 |
Kibana | 7.6.2 |
Nacos | 1.3.0 |
- 打包好所有 SpringBoot 利用的 Docker 镜像,具体应用服务信息如下;
利用 | 阐明 |
---|---|
mall-monitor | 监控核心 |
mall-gateway | 微服务网关 |
mall-auth | 认证核心 |
mall-admin | 商城后盾服务 |
mall-portal | 商城前台服务 |
mall-search | 商城搜寻服务 |
- 将利用所有配置增加到 Nacos 注册核心中去,具体配置文件如下。
执行脚本筹备
Jenkins 自动化部署是须要依赖 Linux 执行脚本的,咱们先把须要执行的脚本筹备好。
- 脚本文件都寄存在了
mall-swarm
我的项目的/document/sh
目录下:
- 上传脚本前在 IDEA 中批改所有脚本文件的换行符格局为
LF
,否则脚本会无奈执行;
- 将所有脚本文件上传到指定目录,这里咱们上传到
/mydata/sh
目录下;
- 将所有脚本文件都批改为可执行文件:
chmod +x ./mall-*
Jenkins 中创立工作
接下来咱们将通过在 Jenkins 中创立工作来实现自动化部署。因为咱们的
mall-swarm
是个多模块的我的项目,部署下面和已经的单模块我的项目还是有所区别的。
mall-admin
因为各个模块执行工作的创立都大同小异,上面将具体解说
mall-admin
模块工作的创立,其余模块将简略解说。
- 首先咱们抉择
构建一个自在格调的软件我的项目
,而后输出工作名称为mall-admin
,配置其 Git 仓库地址,这里我间接应用了 Gitee 下面的地址:
- 之后咱们创立一个构建,构建
mall-swarm
我的项目中的依赖模块,否则当构建可运行的服务模块时会因为无奈找到这些模块而构建失败;
# 只 install mall-common,mall-mbg 两个模块
clean install -pl mall-common,mall-mbg -am
- 依赖模块构建示意图:
- 再创立一个构建,独自构建并打包
mall-admin
模块:
- 再创立一个构建,通过 SSH 去执行
sh
脚本,这里执行的是mall-admin
的运行脚本:
- 点击保留,实现 mall-admin 的执行工作创立。
mall-gateway
mall-gateway
和其余模块与mall-admin
的创立工作形式基本一致,只需批改构建模块时的pom.xml
文件地位和执行脚本
地位即可。
- 咱们能够间接从
mall-admin
模块的工作复制一个过去创立:
- 批改第二个构建中的
pom.xml
文件地位,改为:${WORKSPACE}/mall-gateway/pom.xml
- 批改第三个构建中的 SSH 执行脚本文件地位,改为:
/mydata/sh/mall-gateway.sh
- 点击保留,实现 mall-gateway 的执行工作创立。
其余模块
其余模块的执行工作创立,参考 mall-admin
和mall-gateway
的创立即可。
工作创立实现
Docker 网络问题
如果之前应用的是
Docker Compose
启动所有依赖服务,会默认创立一个网络,所有的依赖服务都会在此网络之中,不同网络内的服务无奈相互拜访。我这里创立的网络是deploy_default
,所以须要指定sh
脚本中服务运行的的网络,否则启动的应用服务会无奈连贯到依赖服务。
- 能够应用
docker inspect mysql
命令来查看 mysql 服务所在的网络;
- 也能够通过
docker network ls
来查看所有网络;
[root@local-linux ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
59b309a5c12f bridge bridge local
3a6f76a8920d deploy_default bridge local
ef34fe69992b host host local
a65be030c632 none
- 批改所有
sh
脚本,批改服务运行的网络,增加一行--network deploy_default \
即可。
模块启动程序问题
因为作为注册核心和配置核心的 Nacos 曾经启动了,其余模块根本没有启动程序的限度,然而最好还是依照上面的程序启动。
举荐启动程序:
- mall-auth
- mall-gateway
- mall-monitor
- mall-admin
- mall-portal
- mall-search
运行实现成果展现
- 查看 API 文档信息,拜访地址:http://192.168.3.101:8201/doc.html
- 查看注册核心注册服务信息,拜访地址:http://192.168.3.101:8848/nacos/
- 监控核心利用信息,拜访地址:http://192.168.3.101:8101
- 日志收集零碎信息,拜访地址:http://192.168.3.101:5601
总结
咱们通过在 Jenkins 中创立工作,实现了 mall-swarm
我的项目的自动化部署工作,这样当咱们每次批改完代码后,只需点击启动工作,就能够实现一键打包部署,省去了频繁打包部署的麻烦。
我的项目地址
https://github.com/macrozheng…