Files
AIRegulation-Deployment/scripts/06_start_all.sh
2026-04-23 09:58:47 +08:00

99 lines
4.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# ══════════════════════════════════════════════════
# 06_start_all.sh
# 一键启动所有服务(完整流程)
# 用法bash scripts/06_start_all.sh
# ══════════════════════════════════════════════════
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
cd "$PROJECT_DIR"
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; BLUE='\033[0;34m'; NC='\033[0m'
info() { echo -e "${BLUE}[INFO]${NC} $*"; }
ok() { echo -e "${GREEN}[OK]${NC} $*"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
error() { echo -e "${RED}[ERROR]${NC} $*"; exit 1; }
echo ""
echo -e "${BLUE}╔══════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║ AI合规智能中枢 — 全服务启动 ║${NC}"
echo -e "${BLUE}╚══════════════════════════════════════════╝${NC}"
echo ""
# ── 前置检查 ────────────────────────────────────
if [[ ! -f ".env" ]]; then
error ".env 文件不存在请先运行bash scripts/01_setup_project.sh"
fi
source .env 2>/dev/null || true
if [[ -z "${DEEPSEEK_API_KEY:-}" && -z "${DASHSCOPE_API_KEY:-}" ]]; then
warn "⚠️ 未设置 LLM API KeyLLM 功能将不可用"
warn "请在 .env 中设置 DEEPSEEK_API_KEY 或 DASHSCOPE_API_KEY"
echo ""
fi
# ── Phase 1基础设施 ────────────────────────────
info "Phase 1/4启动基础设施..."
bash "$SCRIPT_DIR/03_start_infra.sh"
echo ""
# ── Phase 2构建服务镜像 ────────────────────────
info "Phase 2/4构建服务镜像首次较慢..."
docker compose build embedding-service mcp-server compliance-backend 2>&1 | \
grep -E "(Step|Successfully|=>|ERROR)" || true
ok "镜像构建完成"
echo ""
# ── Phase 3初始化数据库 ────────────────────────
info "Phase 3/4初始化数据库..."
bash "$SCRIPT_DIR/05_init_db.sh"
echo ""
# ── Phase 4启动所有服务 ────────────────────────
info "Phase 4/4启动 AI 模型服务和业务服务..."
docker compose up -d embedding-service mcp-server
info "等待 AI 模型加载BGE-M3/MinerU 约需 2-3 分钟)..."
sleep 30
# 等待嵌入服务就绪
for i in {1..20}; do
if curl -sf http://localhost:8010/health > /dev/null 2>&1; then
ok "embedding-service 就绪"
break
fi
echo -n "."
sleep 10
done
docker compose up -d compliance-backend celery-worker celery-beat nginx
info "等待业务服务启动..."
sleep 15
for i in {1..12}; do
if curl -sf http://localhost:8000/health > /dev/null 2>&1; then
ok "compliance-backend 就绪"
break
fi
echo -n "."
sleep 5
done
# ── 最终状态 ────────────────────────────────────
echo ""
echo -e "${GREEN}╔══════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ 所有服务启动完成! ║${NC}"
echo -e "${GREEN}╚══════════════════════════════════════════╝${NC}"
echo ""
docker compose ps --format "table {{.Service}}\t{{.Status}}\t{{.Ports}}"
echo ""
echo -e "${BLUE}访问地址:${NC}"
echo " API 网关 : http://localhost"
echo " API 文档 : http://localhost/docs"
echo " Neo4j 浏览器 : http://localhost:7474"
echo " MinIO 控制台 : http://localhost:9001"
echo ""
echo -e "${YELLOW}运行冒烟测试:${NC}"
echo " bash scripts/07_smoke_test.sh"