93 lines
2.9 KiB
Bash
93 lines
2.9 KiB
Bash
#!/bin/bash
|
||
set -e # 遇到错误立即退出,确保部署流程的可靠性
|
||
|
||
# 颜色输出配置(增强可读性)
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # 重置颜色
|
||
|
||
# 步骤1:停止当前运行的 docker-compose 编排
|
||
echo -e "${YELLOW}===== 第一步:停止当前 docker-compose 服务 ====="${NC}
|
||
if [ -f "./docker-compose.yaml" ]; then
|
||
echo "正在停止现有服务..."
|
||
docker-compose -f ./docker-compose.yaml down
|
||
if [ $? -eq 0 ]; then
|
||
echo -e "${GREEN}现有 docker-compose 服务已成功停止${NC}"
|
||
else
|
||
echo -e "${RED}停止 docker-compose 服务失败!${NC}"
|
||
exit 1
|
||
fi
|
||
else
|
||
echo -e "${RED}错误:未找到当前目录下的 docker-compose.yaml 文件${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
# 步骤2:遍历 api_ 开头的目录并执行 release.sh
|
||
echo -e "\n${YELLOW}===== 第二步:处理 api_ 开头的服务目录 ====="${NC}
|
||
for dir in ./api_*/; do
|
||
# 提取目录名称(移除路径和末尾斜杠)
|
||
dir_name=$(basename "${dir%/}")
|
||
|
||
# 步骤3:跳过 api_template 目录
|
||
if [ "$dir_name" = "api_template" ]; then
|
||
echo -e "${YELLOW} 跳过目录:$dir_name${NC}"
|
||
continue
|
||
fi
|
||
|
||
# 检查目录是否有效
|
||
if [ ! -d "$dir" ]; then
|
||
echo -e "${RED} 警告:$dir 不是有效目录,已跳过${NC}"
|
||
continue
|
||
fi
|
||
|
||
echo -e "\n处理目录:$dir_name"
|
||
# 进入目标目录
|
||
cd "$dir" || {
|
||
echo -e "${RED} 错误:无法进入目录 $dir_name${NC}"
|
||
exit 1
|
||
}
|
||
|
||
# 检查并执行 release.sh
|
||
if [ -f "release.sh" ]; then
|
||
# 添加执行权限
|
||
chmod +x release.sh
|
||
echo " 已为 release.sh 添加执行权限"
|
||
|
||
# 执行脚本
|
||
echo " 正在执行 release.sh..."
|
||
./release.sh
|
||
if [ $? -eq 0 ]; then
|
||
echo -e " ${GREEN}release.sh 执行成功${NC}"
|
||
else
|
||
echo -e " ${RED}release.sh 执行失败!${NC}"
|
||
exit 1
|
||
fi
|
||
else
|
||
echo -e "${YELLOW} 警告:目录 $dir_name 中未找到 release.sh,已跳过${NC}"
|
||
fi
|
||
|
||
# 返回上级目录,继续处理其他目录
|
||
cd .. || {
|
||
echo -e "${RED} 错误:无法返回上级目录${NC}"
|
||
exit 1
|
||
}
|
||
done
|
||
|
||
# 步骤4:启动新的 docker-compose 编排
|
||
echo -e "\n${YELLOW}===== 第三步:启动新的 docker-compose 服务 ====="${NC}
|
||
if [ -f "./docker-compose.yaml" ]; then
|
||
echo "正在启动服务..."
|
||
docker-compose -f ./docker-compose.yaml up -d
|
||
if [ $? -eq 0 ]; then
|
||
echo -e "${GREEN}docker-compose 服务启动成功!${NC}"
|
||
else
|
||
echo -e "${RED}启动 docker-compose 服务失败!${NC}"
|
||
exit 1
|
||
fi
|
||
else
|
||
echo -e "${RED}错误:未找到当前目录下的 docker-compose.yaml 文件${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
echo -e "\n${GREEN}===== 所有部署步骤已完成 ====="${NC} |