#!/bin/bash # 前端单独构建和部署脚本 set -e IMAGE_NAME="selenium-vue-app" TAG=${1:-"latest"} PORT=${2:-"3080"} API_BASE_URL=${3:-"http://localhost:8000/api"} echo "🏗️ 构建前端 Docker 镜像..." echo " 前端端口: $PORT" echo " API地址: $API_BASE_URL" docker build \ --build-arg VITE_API_BASE_URL=$API_BASE_URL \ -t $IMAGE_NAME:$TAG . echo "🛑 停止现有容器(如果存在)..." docker stop $IMAGE_NAME 2>/dev/null || true docker rm $IMAGE_NAME 2>/dev/null || true echo "🚀 启动前端容器..." docker run -d \ --name $IMAGE_NAME \ -p $PORT:80 \ --restart unless-stopped \ $IMAGE_NAME:$TAG echo "⏳ 等待服务启动..." sleep 3 echo "🏥 健康检查..." # 尝试多个地址进行健康检查 HEALTH_URLS=("http://localhost:$PORT" "http://127.0.0.1:$PORT") HEALTH_SUCCESS=false for url in "${HEALTH_URLS[@]}"; do if curl -f "$url" > /dev/null 2>&1; then echo "✅ 前端启动成功!" echo "📱 访问地址: $url" HEALTH_SUCCESS=true break fi done if [ "$HEALTH_SUCCESS" = false ]; then echo "❌ 前端启动失败,查看日志:" docker logs $IMAGE_NAME exit 1 fi echo "" echo "📋 配置信息:" echo " 前端端口: $PORT" echo " API地址: $API_BASE_URL" echo "" echo "📋 使用说明:" echo " 用法: $0 [TAG] [PORT] [API_BASE_URL]" echo " 示例: $0 v1.0 8080 http://192.168.1.100:8000/api" echo "" echo "📋 常用命令:" echo " 查看日志: docker logs $IMAGE_NAME" echo " 进入容器: docker exec -it $IMAGE_NAME /bin/sh" echo " 停止应用: docker stop $IMAGE_NAME" echo " 删除容器: docker rm $IMAGE_NAME"