ai_learn_node/scripts/start-local.sh

87 lines
1.8 KiB
Bash
Raw Normal View History

2026-01-14 11:30:15 +00:00
#!/bin/bash
# 本地 Docker 启动脚本
set -e
echo "=== 检查 Docker ==="
if ! docker info > /dev/null 2>&1; then
echo "错误: Docker daemon 未运行"
echo "请先启动 Docker Desktop 或 Docker daemon"
exit 1
fi
echo "Docker 运行正常"
echo ""
# 进入项目根目录
cd "$(dirname "$0")/.."
echo "=== 检查并构建项目 ==="
# 检查前端是否已构建
if [ ! -d "frontend/dist" ] || [ -z "$(ls -A frontend/dist 2>/dev/null)" ]; then
echo "前端未构建,开始构建..."
npm install
npm run install:all
npm run build --workspace=frontend
else
echo "前端已构建,跳过..."
fi
# 检查后端是否已构建
if [ ! -d "backend/dist" ] || [ -z "$(ls -A backend/dist 2>/dev/null)" ]; then
echo "后端未构建,开始构建..."
cd backend
npm install
npm run build
npm run prisma:generate
cd ..
else
echo "后端已构建,跳过..."
fi
echo ""
echo "=== 启动 Docker 容器 ==="
cd nginx
# 检查 docker-compose 命令(支持新版本的 docker compose
if command -v docker-compose &> /dev/null; then
COMPOSE_CMD="docker-compose"
elif docker compose version &> /dev/null 2>&1; then
COMPOSE_CMD="docker compose"
else
echo "错误: 未找到 docker-compose 或 docker compose 命令"
exit 1
fi
# 停止旧容器(如果存在)
echo "停止旧容器..."
$COMPOSE_CMD down 2>/dev/null || true
# 创建必要的目录
mkdir -p logs
# 启动容器
echo "启动容器..."
$COMPOSE_CMD up -d --build
echo ""
echo "=== 等待服务启动 ==="
sleep 5
# 检查容器状态
echo "容器状态:"
$COMPOSE_CMD ps
echo ""
echo "=== 服务信息 ==="
echo "前端: http://localhost"
echo "后端 API: http://localhost:3001"
echo ""
echo "查看日志:"
echo " $COMPOSE_CMD logs -f"
echo ""
echo "停止服务:"
echo " $COMPOSE_CMD down"