Files
user_service/deploy/deploy.sh
2025-10-09 18:19:57 +08:00

82 lines
2.9 KiB
Bash
Raw Permalink 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
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}