68 lines
1.6 KiB
Bash
68 lines
1.6 KiB
Bash
|
#!/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"
|