82 lines
2.9 KiB
Bash
82 lines
2.9 KiB
Bash
#!/bin/bash
|
||
set -e # 遇到错误立即退出,确保部署流程的可靠性
|
||
|
||
# 颜色输出配置(增强可读性)
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # 重置颜色
|
||
|
||
COMPOSE_PROJECT_NAME="user_service"
|
||
DOCKER_COMPOSE_FILE="./docker-compose.yaml"
|
||
API_DIR="./api" # API服务所在目录
|
||
|
||
# 步骤1:停止指定名称的docker-compose编排
|
||
echo -e "${YELLOW}===== 第一步:停止编排名称为 $COMPOSE_PROJECT_NAME 的服务 ====="${NC}
|
||
if [ -f "$DOCKER_COMPOSE_FILE" ]; then
|
||
echo "正在停止服务..."
|
||
docker-compose -f "$DOCKER_COMPOSE_FILE" -p "$COMPOSE_PROJECT_NAME" down
|
||
if [ $? -eq 0 ]; then
|
||
echo -e "${GREEN}编排 $COMPOSE_PROJECT_NAME 已成功停止${NC}"
|
||
else
|
||
echo -e "${RED}停止编排 $COMPOSE_PROJECT_NAME 失败!${NC}"
|
||
exit 1
|
||
fi
|
||
else
|
||
echo -e "${RED}错误:未找到 $DOCKER_COMPOSE_FILE 文件${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
# 步骤2:处理所有API服务的release.sh
|
||
echo -e "\n${YELLOW}===== 第二步:执行所有API服务的构建脚本 ====="${NC}
|
||
if [ -d "$API_DIR" ]; then
|
||
# 遍历API目录下的所有子文件夹
|
||
for api_folder in "$API_DIR"/*/; do
|
||
# 检查是否为目录
|
||
if [ -d "$api_folder" ]; then
|
||
# 提取文件夹名称(用于日志显示)
|
||
folder_name=$(basename "$api_folder")
|
||
echo -e "\n${YELLOW}处理服务: $folder_name${NC}"
|
||
|
||
# 检查release.sh是否存在
|
||
release_script="${api_folder}/release.sh"
|
||
if [ -f "$release_script" ]; then
|
||
echo "给予 $release_script 执行权限..."
|
||
chmod +x "$release_script"
|
||
|
||
echo "执行 $release_script ..."
|
||
(cd "$api_folder" && ./release.sh) # 进入目录并执行脚本
|
||
|
||
if [ $? -eq 0 ]; then
|
||
echo -e "${GREEN}$folder_name 服务构建完成${NC}"
|
||
else
|
||
echo -e "${RED}$folder_name 服务构建失败!${NC}"
|
||
exit 1
|
||
fi
|
||
else
|
||
echo -e "${YELLOW}警告:$api_folder 中未找到 release.sh,跳过该目录${NC}"
|
||
fi
|
||
fi
|
||
done
|
||
else
|
||
echo -e "${RED}错误:未找到 $API_DIR 目录${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
# 步骤3:启动指定名称的docker-compose编排
|
||
echo -e "\n${YELLOW}===== 第三步:启动编排名称为 $COMPOSE_PROJECT_NAME 的服务 ====="${NC}
|
||
if [ -f "$DOCKER_COMPOSE_FILE" ]; then
|
||
echo "正在启动服务..."
|
||
docker-compose -f "$DOCKER_COMPOSE_FILE" -p "$COMPOSE_PROJECT_NAME" up -d
|
||
if [ $? -eq 0 ]; then
|
||
echo -e "${GREEN}编排 $COMPOSE_PROJECT_NAME 启动成功!${NC}"
|
||
else
|
||
echo -e "${RED}启动编排 $COMPOSE_PROJECT_NAME 失败!${NC}"
|
||
exit 1
|
||
fi
|
||
else
|
||
echo -e "${RED}错误:未找到 $DOCKER_COMPOSE_FILE 文件${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
echo -e "\n${GREEN}===== 所有部署步骤已完成 ====="${NC} |