first commit
This commit is contained in:
98
scripts/06_start_all.sh
Normal file
98
scripts/06_start_all.sh
Normal file
@@ -0,0 +1,98 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user