#!/bin/bash set -e # 核心配置(必改 CONFIG_DIR) APP_NAME="authcenter" APP_VERSION="1.0.0" IMAGE_NAME="${APP_NAME}:${APP_VERSION}" CONTAINER_NAME="authcenter-app" HOST_PORT=999 CONTAINER_PORT=990 CONFIG_DIR="/sdcard/WinBoLLStudio/AuthCenterConsoleApp" # 务必修改!例 /home/zhang/authcenter/config WORK_DIR="/sdcard/WinBoLLStudio/AuthCenterConsoleApp" log(){ echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" } log "===== 一键构建启动开始 =====" # 1. Maven打包 log "1. Maven编译打包" mvn clean package -Dmaven.test.skip=true # 2. 删旧容器(强制) log "2. 清理旧容器" docker rm -f "${CONTAINER_NAME}" >/dev/null 2>&1 || log "无旧容器" # 3. 删旧镜像 log "3. 清理旧镜像" docker rmi -f "${IMAGE_NAME}" >/dev/null 2>&1 || log "无旧镜像" # 清悬空镜像 docker rmi $(docker images -f dangling=true -q) 2>/dev/null || true # 4. 构建镜像(变量加引号,必加!) log "4. 构建镜像 ${IMAGE_NAME}" docker build -t "${IMAGE_NAME}" . # 5. 启动容器(挂载+时区+内存限制) log "5. 启动容器" docker run -d \ --name "${CONTAINER_NAME}" \ -p "${HOST_PORT}":"${CONTAINER_PORT}" \ -v "${CONFIG_DIR}":"${WORK_DIR}"/config:ro \ -v /etc/localtime:/etc/localtime:ro \ --restart=on-failure:3 \ --memory=512m \ "${IMAGE_NAME}" # 验证 if docker ps | grep -w "${CONTAINER_NAME}"; then log "✅ 成功!容器名:${CONTAINER_NAME} 访问:http://本机IP:${HOST_PORT}" else log "❌ 容器启动失败!" exit 1 fi