Files
asset_assistant/frontend/asset-assistant-system/deploy.sh
2025-11-12 17:10:40 +08:00

64 lines
2.2 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
set -euo pipefail # 更严格的错误检查:未定义变量报错、管道错误传递
# 定义日志函数(带时间戳和级别)
log_info() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] [INFO] $1"
}
log_warn() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] [WARN] $1" >&2
}
log_error() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] [ERROR] $1" >&2
}
# 定义配置常量(等号两侧无空格!集中管理,便于修改)
IMAGE_NAME="asset-assistant-frontend-system"
IMAGE_TAG="1.0.0"
FULL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}"
DOCKERFILE_PATH="./Dockerfile"
SERVICE_NAME="asset-assistant-frontend" # 服务容器名称,便于管理
HOST_PORT=8080 # 主机映射端口
CONTAINER_PORT=80 # 容器内部端口
log_info "===== 开始执行构建脚本 ====="
# 步骤1停止并删除现有容器忽略不存在的情况
log_info "检查并停止现有容器: ${SERVICE_NAME}"
if sudo docker rm -f "${SERVICE_NAME}" >/dev/null 2>&1; then
log_info "容器 ${SERVICE_NAME} 已停止并删除"
else
log_warn "容器 ${SERVICE_NAME} 不存在,跳过删除步骤"
fi
# 步骤2删除现有镜像忽略不存在的情况
log_info "尝试删除现有镜像: ${FULL_IMAGE}"
if sudo docker rmi -f "${FULL_IMAGE}" >/dev/null 2>&1; then
log_info "镜像 ${FULL_IMAGE} 删除成功"
else
log_warn "镜像 ${FULL_IMAGE} 不存在或无法删除,跳过删除步骤"
fi
# 步骤3构建新镜像
log_info "开始构建新镜像: ${FULL_IMAGE}Dockerfile位于${DOCKERFILE_PATH}"
if sudo docker build -t "${FULL_IMAGE}" -f Dockerfile .; then
log_info "镜像 ${FULL_IMAGE} 构建成功"
else
log_error "镜像 ${FULL_IMAGE} 构建失败"
exit 1
fi
# 步骤4启动服务
log_info "启动新容器: ${SERVICE_NAME}${HOST_PORT}:${CONTAINER_PORT}"
# 启动容器(后台运行、端口映射、命名容器)
if sudo docker run -d -p "${HOST_PORT}:${CONTAINER_PORT}" --name "${SERVICE_NAME}" "${FULL_IMAGE}"; then
log_info "容器 ${SERVICE_NAME} 启动成功,访问地址: http://localhost:${HOST_PORT}"
else
log_error "容器 ${SERVICE_NAME} 启动失败"
exit 1
fi
log_info "===== 构建脚本执行完成 ====="