部署
注意
目前作者使用的部署方式为阿里云效 + Docker一键部署。部署方式大同小异,均是将待部署的应用打包成Docker镜像,然后通过Docker命令启动服务。
作者使用的均为个人免费版
,配置与企业版略有差异。本文以quan-app-aggregations
服务部署配置为例。
本项目内置了Docker脚本,配合云效部署脚本,用于一键部署到 Linux 服务器。
使用阿里云效持续集成
第一步,按照官方文档,创建一个流水线。
第二步,添加流水线源
提示
作者使用的是码云,可以按照自己的代码库配置。
第三步,构建配置
点击 任务步骤 > Java 构建
步骤名称:自定义
JDK版本:选择1.8
Maven版本:不选择
重点关注构建命令,配置如下:
# gradle build default command
./gradlew build
echo
echo 复制Dockerfile
cp quan-app/quan-app-aggregations/src/main/docker/Dockerfile quan-app/quan-app-aggregations/build/libs
cp quan-app/quan-app-aggregations/src/main/docker/runboot.sh quan-app/quan-app-aggregations/build/libs
echo
echo 开始构建镜像
示例:
点击 任务步骤 > 添加步骤
针对项目相关参数说明(其它参数按照云效默认配置即可):
配置 | 说明 | 示例 |
---|---|---|
标签 | 服务名称-日期;docker执行脚本固定为该格式 | quan-app-aggregations-$ |
Dockerfile路径 | 构建脚本会将默认的文件复制到构建目录,因此需要填写构建目录下的文件路径 | quan-app/quan-app-aggregations/build/libs/Dockerfile |
示例:
第四步,部署配置
新增一个任务,选则:部署/Docker部署,并点击部署配置进行编辑
新建主机组
提示
如果是阿里云ECS服务器实例,可以点击阿里云ECS,直接添加。
如果是自有主机,点击自有主机后,按照界面的提示,将代码复制到自己的 Linux 服务器上运行即可添加。
部署脚本配置
提示
此脚本以quan-app-aggregations
服务配置为例,实现比较简单仅供参考,可以修改为自己的应用服务或自己实现脚本配置。
该示例中的 Docker镜像 是从作者的阿里云镜像仓库个人版中拉取,必须替换为自己的镜像配置。
示例中的所有 变量
均固定在脚本中;它们也可以配置到云效的 部署脚本变量配置
中,从而更好的维护脚本参数。
echo
echo 正在停止服务
docker stop `docker ps -a| grep quan-app-aggregations | awk '{print $1}'`
echo
echo 清理服务部署文件
docker rm `docker ps -a| grep quan-app-aggregations | awk '{print $1}'`
echo
echo 清理服务镜像
docker rmi `docker images | grep -E "quan-app-aggregations" | awk '{print $3}' | uniq `
echo
echo 拉取最新镜像
docker pull registry.cn-shenzhen.aliyuncs.com/quan100/images:quan-app-aggregations-${DATETIME}
echo
echo 运行镜像
docker run -d --privileged=true --restart=always --name quan-app-aggregations --network quan-app-net -p 10020:10020 -e "SPRING_PROFILES_ACTIVE=prod" -e "jasypt.encryptor.password=这里配置yml配置解密所需的密码" -v /data/projectLog/quan-app-aggregations:/root/data/projectLog/quan-app-aggregations registry.cn-shenzhen.aliyuncs.com/quan100/images:quan-app-aggregations-${DATETIME}
# 检查服务是否部署成功
# 本机可访问的应用服务地址为:http://localhost:10020/health
echo "检查服务运行状态..."
for (( i=0; i<${check_max_count}; ++i ))
do
if [ $(curl -sIL -w "%{http_code}" -o /dev/null http://localhost:10020/health) -eq 200 ];then
echo "服务启动成功"
break
else
if [[ i -eq ${check_max_count} ]];then
echo "检查服务运行状态超过限制次数,请手动检查"
exit 1
else
sleep ${check_sleep}
fi
fi
done
注意⚠️
docker run 命令中的 -e "SPRING_PROFILES_ACTIVE=prod"
-e "jasypt.encryptor.password=这里配置yml配置解密所需的密码"
需修改为自己的配置。若已经在项目中配置,可剔除 docker run 命令中的配置。
部署脚本变量配置
提示
部署脚本中添加变量后,需通过可视化界面编辑新增才能生效。
变量格式:${变量名称} 示例:$
当前部署脚本中应用的变量:
变量 | 类型 | 说明 |
---|---|---|
check_max_count | int | 配置检查的最大次数 |
check_sleep | int | 每次检查完后的停顿时间 |
示例:
第五步,检查完整的流程配置
提示
流程配置完成后,即可点击保存并运行。静待部署结果 ~
配置代码源触发部署
只需要push提交代码到仓库master分支即可。
参考:配置代码源触发