Blame view

scripts/start.sh 2.07 KB
e7f2b240   tangwang   first commit
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