first commit
This commit is contained in:
93
scripts/03_start_infra.sh
Normal file
93
scripts/03_start_infra.sh
Normal file
@@ -0,0 +1,93 @@
|
||||
#!/usr/bin/env bash
|
||||
# ══════════════════════════════════════════════════
|
||||
# 03_start_infra.sh
|
||||
# 分步启动基础设施(含健康等待),顺序:
|
||||
# PostgreSQL + Redis → etcd + MinIO → Milvus → Neo4j
|
||||
# 用法:bash scripts/03_start_infra.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; }
|
||||
|
||||
# 等待服务健康的函数
|
||||
wait_healthy() {
|
||||
local service=$1
|
||||
local max_wait=${2:-120}
|
||||
local interval=5
|
||||
local elapsed=0
|
||||
|
||||
info "等待 $service 健康就绪..."
|
||||
while [[ $elapsed -lt $max_wait ]]; do
|
||||
local status
|
||||
status=$(docker compose ps --format json "$service" 2>/dev/null | \
|
||||
python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('Health','unknown'))" 2>/dev/null || echo "unknown")
|
||||
|
||||
if [[ "$status" == "healthy" ]]; then
|
||||
ok "$service 已就绪"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo -n "."
|
||||
sleep $interval
|
||||
elapsed=$((elapsed + interval))
|
||||
done
|
||||
echo ""
|
||||
error "$service 等待超时(${max_wait}s),请检查:docker compose logs $service"
|
||||
}
|
||||
|
||||
info "══════════════════════════════════════════"
|
||||
info " 启动基础设施层"
|
||||
info "══════════════════════════════════════════"
|
||||
|
||||
# ── Step 1:PostgreSQL + Redis ──────────────────
|
||||
info "Step 1/4:启动 PostgreSQL 和 Redis..."
|
||||
docker compose up -d postgres redis
|
||||
|
||||
wait_healthy postgres 90
|
||||
wait_healthy redis 30
|
||||
ok "数据层就绪"
|
||||
|
||||
# ── Step 2:etcd + MinIO(Milvus 依赖)─────────
|
||||
info "Step 2/4:启动 etcd 和 MinIO(Milvus 依赖)..."
|
||||
docker compose up -d etcd minio
|
||||
|
||||
wait_healthy etcd 60
|
||||
wait_healthy minio 60
|
||||
ok "对象存储层就绪"
|
||||
|
||||
# ── Step 3:Milvus ──────────────────────────────
|
||||
info "Step 3/4:启动 Milvus(向量数据库)..."
|
||||
docker compose up -d milvus
|
||||
|
||||
info "Milvus 初始化需要约 60 秒,请耐心等待..."
|
||||
wait_healthy milvus 180
|
||||
ok "Milvus 就绪"
|
||||
|
||||
# ── Step 4:Neo4j ───────────────────────────────
|
||||
info "Step 4/4:启动 Neo4j(知识图谱)..."
|
||||
docker compose up -d neo4j
|
||||
|
||||
wait_healthy neo4j 120
|
||||
ok "Neo4j 就绪"
|
||||
|
||||
# ── 汇总 ────────────────────────────────────────
|
||||
echo ""
|
||||
echo -e "${GREEN}══════════════════════════════════════════${NC}"
|
||||
echo -e "${GREEN} 基础设施启动完成!${NC}"
|
||||
echo -e "${GREEN}══════════════════════════════════════════${NC}"
|
||||
echo ""
|
||||
echo " PostgreSQL : localhost:5432"
|
||||
echo " Redis : localhost:6379"
|
||||
echo " Milvus : localhost:19530 (gRPC), localhost:9091 (HTTP)"
|
||||
echo " Neo4j : localhost:7474 (Browser), localhost:7687 (Bolt)"
|
||||
echo " MinIO 控制台: localhost:9001 (admin/minioadmin)"
|
||||
echo ""
|
||||
echo "下一步:bash scripts/04_build_services.sh"
|
||||
Reference in New Issue
Block a user