#!/bin/bash set -e echo "=========================================" echo " 启动测试环境" echo "========================================" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" check_port() { local port=$1 if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null 2>&1; then echo "端口 $port 已被占用" return 1 fi return 0 } echo "----------------------------------------" echo " 检查服务状态..." echo "----------------------------------------" API_RUNNING=false ADMIN_RUNNING=false if lsof -Pi :8080 -sTCP:LISTEN -t >/dev/null 2>&1; then echo "API服务已在运行 (端口 8080)" API_RUNNING=true fi if lsof -Pi :5173 -sTCP:LISTEN -t >/dev/null 2>&1; then echo "Admin服务已在运行 (端口 5173)" ADMIN_RUNNING=true fi if [ "$API_RUNNING" = true ] && [ "$ADMIN_RUNNING" = true ]; then echo "所有服务已在运行" bash "$SCRIPT_DIR/check-services.sh" exit 0 fi echo "----------------------------------------" echo " 启动 API 服务..." echo "----------------------------------------" if [ "$API_RUNNING" = false ]; then cd "$PROJECT_ROOT/../everything-is-suitable-api/everything-is-suitable-app" nohup mvn spring-boot:run -Dspring-boot.run.profiles=dev > /tmp/api.log 2>&1 & API_PID=$! echo "API服务启动中... (PID: $API_PID)" sleep 30 else echo "API服务已在运行" fi echo "----------------------------------------" echo " 启动 Admin 服务..." echo "----------------------------------------" if [ "$ADMIN_RUNNING" = false ]; then cd "$PROJECT_ROOT/../everything-is-suitable-admin" nohup npm run dev > /tmp/admin.log 2>&1 & ADMIN_PID=$! echo "Admin服务启动中... (PID: $ADMIN_PID)" sleep 10 else echo "Admin服务已在运行" fi echo "----------------------------------------" echo " 验证服务健康..." echo "----------------------------------------" bash "$SCRIPT_DIR/check-services.sh" echo "=========================================" echo " ✅ 所有服务启动成功!" echo "=========================================" echo "API服务日志: /tmp/api.log" echo "Admin服务日志: /tmp/admin.log"