This commit is contained in:
vipg
2025-11-11 15:08:59 +08:00
parent 2472158f0c
commit 5c49136861

View File

@@ -14,20 +14,20 @@ log_error() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] [ERROR] $1" >&2
}
# 定义配置常量(集中管理,便于修改)
# 定义配置常量(等号两侧无空格!集中管理,便于修改)
IMAGE_NAME="user-api"
IMAGE_TAG="1.0.0"
FULL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}"
COMPOSE_PROJECT_NAME="user_service"
DOCKER_COMPOSE_FILE="./docker-compose.yaml"
DOCKER_COMPOSE_FILE="./docker-compose.yaml" # ✅ 关键修复:等号两侧无空格
SRC_DIR="./src"
DOCKERFILE_PATH="${SRC_DIR}/Dockerfile"
# 检查目录和文件存在性的通用函数
check_exists() {
local path=$1
local type=$2 # "file" 或 "dir"
local desc=$3
local path="$1" # 变量引用加引号,避免路径含空格报错
local type="$2" # "file" 或 "dir"
local desc="$3"
if [ "$type" = "file" ] && [ ! -f "$path" ]; then
log_error "缺失必要文件: $desc ($path)"
@@ -45,13 +45,12 @@ check_exists "$DOCKER_COMPOSE_FILE" "file" "docker-compose配置文件"
check_exists "$SRC_DIR" "dir" "源代码目录"
check_exists "$DOCKERFILE_PATH" "file" "Dockerfile"
# 步骤1停止docker-compose服务
# 步骤1停止docker-compose服务(变量引用加引号,兼容路径含空格)
log_info "开始停止编排服务: ${COMPOSE_PROJECT_NAME}"
if docker-compose -f "$DOCKER_COMPOSE_FILE" -p "$COMPOSE_PROJECT_NAME" down; then
log_info "编排服务 ${COMPOSE_PROJECT_NAME} 已成功停止"
else
log_warn "编排服务 ${COMPOSE_PROJECT_NAME} 停止失败或未运行,继续执行后续步骤"
# 不退出,允许服务未运行时继续构建
fi
# 步骤2删除现有镜像忽略不存在的情况
@@ -62,7 +61,7 @@ else
log_warn "镜像 ${FULL_IMAGE} 不存在或无法删除,跳过删除步骤"
fi
# 步骤3构建新镜像
# 步骤3构建新镜像切换到src目录避免路径问题
log_info "开始构建新镜像: ${FULL_IMAGE}Dockerfile位于${DOCKERFILE_PATH}"
if cd "$SRC_DIR" && sudo docker build -t "${FULL_IMAGE}" -f Dockerfile .; then
log_info "镜像 ${FULL_IMAGE} 构建成功"
@@ -71,10 +70,14 @@ else
exit 1
fi
# 步骤4启动新服务
# 步骤4启动docker-compose服务变量引用加引号
log_info "开始启动编排服务: ${COMPOSE_PROJECT_NAME}"
cd ..
if docker-compose -f "$DOCKER_COMPOSE_FILE" -p "$COMPOSE_PROJECT_NAME" up -d; then
log_info "编排服务 ${COMPOSE_PROJECT_NAME} 已成功启动"
# 额外输出运行状态,提升用户体验
log_info "当前运行的容器:"
docker-compose -f "$DOCKER_COMPOSE_FILE" -p "$COMPOSE_PROJECT_NAME" ps
else
log_error "编排服务 ${COMPOSE_PROJECT_NAME} 启动失败"
exit 1