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"
|