This commit is contained in:
vipg
2025-11-12 17:10:40 +08:00
parent f5277b087b
commit 8fba06bca3
4 changed files with 119 additions and 2 deletions

View File

@@ -0,0 +1,63 @@
#!/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 "===== 构建脚本执行完成 ====="