start.sh
2.07 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
#!/usr/bin/env bash
# =============================================================================
# OmniShopAgent - 启动脚本
# 启动 Milvus、CLIP(可选)、Streamlit 应用
# =============================================================================
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
VENV_DIR="${VENV_DIR:-$PROJECT_ROOT/venv}"
STREAMLIT_PORT="${STREAMLIT_PORT:-8501}"
STREAMLIT_HOST="${STREAMLIT_HOST:-0.0.0.0}"
cd "$PROJECT_ROOT"
# 激活虚拟环境
if [ -d "$VENV_DIR" ]; then
echo "激活虚拟环境: $VENV_DIR"
set +u
source "$VENV_DIR/bin/activate"
set -u
else
echo "警告: 未找到虚拟环境 $VENV_DIR,使用当前 Python"
fi
echo "=========================================="
echo "OmniShopAgent 启动"
echo "=========================================="
# 1. 启动 Milvus(Docker)
if command -v docker &>/dev/null; then
echo "[1/3] 检查 Milvus..."
if ! docker ps --format '{{.Names}}' 2>/dev/null | grep -q milvus-standalone; then
echo " 启动 Milvus (docker compose)..."
docker compose up -d 2>/dev/null || docker-compose up -d 2>/dev/null || {
echo " 警告: 无法启动 Milvus,请手动执行: docker compose up -d"
}
echo " 等待 Milvus 就绪 (30s)..."
sleep 30
else
echo " Milvus 已运行"
fi
else
echo "[1/3] 跳过 Milvus: 未安装 Docker"
fi
# 2. 检查 CLIP(可选,图像搜索需要)
echo "[2/3] 检查 CLIP 服务..."
echo " 提示: 图像搜索需 CLIP。若未启动,请另开终端执行: python -m clip_server launch"
echo " 文本搜索可无需 CLIP。"
# 3. 启动 Streamlit
echo "[3/3] 启动 Streamlit (端口 $STREAMLIT_PORT)..."
echo ""
echo " 访问: http://$STREAMLIT_HOST:$STREAMLIT_PORT"
echo " 按 Ctrl+C 停止"
echo "=========================================="
exec streamlit run app.py \
--server.port="$STREAMLIT_PORT" \
--server.address="$STREAMLIT_HOST" \
--server.headless=true \
--browser.gatherUsageStats=false