wzj-boot/ruoyi-admin/deploy.sh
2024-12-05 14:18:57 +08:00

104 lines
3.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 接收参数
for arg in "$@"; do
eval "$arg"
done
# 默认变量检查,如果未传入对应参数则使用默认值
#指定目标主机的目录路径,它代表着部署应用的目录位置
host=${host:-"server"}
# 项目名称
name=${name:-"ruoyi-admin"}
# 环境配置
profile=${profile:-"prod"}
# 镜像标签,默认 "ruoyi/ruoyi-server:5.2.3"
dockerfile_imageTag=${dockerfile_imageTag:-"ruoyi/ruoyi-server:5.2.3"}
# Dockerfile 路径,默认 "ruoyi-admin"
dockerfile_sourceFilePath=${dockerfile_sourceFilePath:-"ruoyi-admin"}
# 制品包路径,默认 "/home/admin/app"
package_path=${package_path:-"/home/admin/app"}
# 1. 删除目标目录中的旧文件
echo "删除旧的文件..."
rm -rf /www/wwwroot/${host}/*
# 2. 解压制品包到对应目录
echo "解压制品包到 ${host}..."
tar zxvf ${package_path}/${name}_package.tgz -C /www/wwwroot/${host}/
# 3. 停止容器(优雅停止)
echo "尝试优雅停止容器..."
if docker ps | grep -q "${name}_${profile}"; then
docker stop --time=30 ${name}_${profile}
else
echo "容器 ${name}_${profile} 不存在或已停止,无需处理。"
fi
# 4. 删除容器
echo "删除容器..."
if docker ps -a | grep -q "${name}_${profile}"; then
docker rm ${name}_${profile}
else
echo "容器 ${name}_${profile} 不存在,无需删除。"
fi
# 5. 删除镜像
echo "删除镜像 ${dockerfile_imageTag}..."
if docker images | grep -q "${dockerfile_imageTag}"; then
docker rmi ${dockerfile_imageTag}
else
echo "镜像 ${dockerfile_imageTag} 不存在,无需删除。"
fi
# 6. 构建镜像
echo "构建镜像 ${dockerfile_imageTag}..."
docker build -t ${dockerfile_imageTag} -f /www/wwwroot/${host}/${dockerfile_sourceFilePath}/Dockerfile /www/wwwroot/${host}/${dockerfile_sourceFilePath}
# 7. 运行容器
echo "运行容器 ${name}_${profile}..."
docker run --name ${name}_${profile} --network=host -e TZ=Asia/Shanghai -d ${dockerfile_imageTag}
# 8. 清理制品包
echo "清理制品包..."
rm -rf ${package_path}/${name}_package.tgz
echo "脚本执行完成!"
#------------------------- 流水线部署脚本命令(请将此段代码复制到实际部署脚本中)-------------------------
## 定义必要的变量
#host=${host} # 指定目标主机的目录路径,它代表着部署应用的目录位置
#name=${name} # 应用名
#profile=${profile} # 环境配置prod/test
#dockerfile_imageTag=${dockerfile_imageTag} # 镜像标签
#dockerfile_sourceFilePath=${dockerfile_sourceFilePath} # Dockerfile 所在路径
#package_path=${package_path} # 制品包路径
#
## 创建部署脚本的路径
#deploy_script=${deploy_script}
#
## 检查部署脚本是否存在
#if [ ! -f "$deploy_script" ]; then
# echo "部署脚本 $deploy_script 不存在,无法执行!"
# exit 1
#fi
#
## 为部署脚本设置执行权限
#chmod +x "$deploy_script"
#
## 调用部署脚本并传递参数
#bash "$deploy_script" \
# host="$host" \
# name="$name" \
# profile="$profile" \
# dockerfile_imageTag="$dockerfile_imageTag" \
# dockerfile_sourceFilePath="$dockerfile_sourceFilePath" \
# package_path="$package_path"
#
## 检查脚本执行结果
#if [ $? -eq 0 ]; then
# echo "部署成功!"
#else
# echo "部署失败,请检查日志!"
#fi