99 lines
4.1 KiB
Bash
99 lines
4.1 KiB
Bash
#!/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 Key,LLM 功能将不可用"
|
||
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"
|