Repository navigation
Expand file tree
/
Copy pathstart.sh
More file actions
83 lines (71 loc) · 2.89 KB
/
Copy pathstart.sh
File metadata and controls
83 lines (71 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/bin/bash
# ============================================================
# shopkeeper-agent 一键启动脚本
# 首次运行会执行完整初始化,后续启动只会重启服务
# ============================================================
set -e
COMPOSE_FILE="docker/docker-compose.yaml"
ENV_FILE=".env"
echo "========================================="
echo " shopkeeper-agent 启动中..."
echo "========================================="
# ---------- Step 1: 启动 Docker 基础服务 ----------
echo ""
echo "[1/5] 启动 Docker 基础服务 (MySQL/ES/Qdrant/Redis/Embedding)..."
docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" up -d
echo " ✅ Docker 服务已启动"
# ---------- Step 2: 安装后端依赖(首次) ----------
echo ""
echo "[2/5] 检查后端依赖..."
if [ ! -d ".venv/lib" ] 2>/dev/null && [ ! -d ".venv/Lib" ] 2>/dev/null && [ ! -d ".venv/lib64" ] 2>/dev/null; then
echo " 首次运行,安装依赖中..."
uv sync
echo " ✅ 依赖安装完成"
else
echo " ✅ 依赖已安装,跳过"
fi
# ---------- Step 3: 下载 Embedding 模型(首次) ----------
echo ""
echo "[3/5] 检查 Embedding 模型..."
if [ ! -f "docker/embedding/bge-large-zh-v1.5/pytorch_model.bin" ]; then
echo " 首次运行,下载模型中(约 1.2GB)..."
uv run hf download BAAI/bge-large-zh-v1.5 --local-dir docker/embedding/bge-large-zh-v1.5
echo " ✅ 模型下载完成"
else
echo " ✅ 模型已存在,跳过"
fi
# ---------- Step 4: 等待服务就绪 ----------
echo ""
echo "[4/5] 等待基础服务就绪..."
echo " 等待 MySQL..."
until docker compose -f "$COMPOSE_FILE" --env-file "$ENV_FILE" exec -T mysql mysqladmin ping -h127.0.0.1 -uroot -p"${MYSQL_ROOT_PASSWORD}" --silent 2>/dev/null; do
sleep 2
done
echo " ✅ MySQL 就绪"
echo " 等待 Qdrant..."
until curl -sf http://localhost:7333/health > /dev/null 2>&1; do sleep 2; done
echo " ✅ Qdrant 就绪"
echo " 等待 Elasticsearch..."
until curl -sf http://localhost:10200/_cluster/health > /dev/null 2>&1; do sleep 2; done
echo " ✅ Elasticsearch 就绪"
echo " 等待 Embedding..."
until curl -sf http://localhost:9081/health > /dev/null 2>&1; do sleep 2; done
echo " ✅ Embedding 就绪"
# ---------- Step 5: 构建知识库(首次或强制) ----------
echo ""
echo "[5/5] 构建元数据知识库..."
uv run python -m app.scripts.build_meta_knowledge -c conf/meta_config.yaml
echo " ✅ 知识库构建完成"
# ---------- 启动后端 ----------
echo ""
echo "========================================="
echo " 基础服务全部就绪,启动后端服务..."
echo "========================================="
echo ""
echo " 后端地址: http://127.0.0.1:9000"
echo " API 文档: http://127.0.0.1:9000/docs"
echo " 健康检查: http://127.0.0.1:9000/health"
echo ""
echo " 启动前端: cd frontend && pnpm install && pnpm dev"
echo ""
uv run fastapi dev main.py --port 9000