#!/usr/bin/env bash # 一键启动 HSAP 平台 + 内置 CVAT 标注引擎 set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" cd "$ROOT" if [[ ! -f .env ]]; then cp .env.example .env echo "已创建 .env(请按部署机器修改 AS_WORKSPACE_ROOT / AS_DATA_LAKE_HOST / AS_FRONTEND_URL)" fi DEFAULT_WS="$(cd "$ROOT/.." && pwd)/workspace" if [[ -d "$DEFAULT_WS/DMS" ]] && ! grep -q '^AS_WORKSPACE_ROOT=' .env 2>/dev/null; then echo "AS_WORKSPACE_ROOT=$DEFAULT_WS" >> .env echo "已写入 AS_WORKSPACE_ROOT=$DEFAULT_WS" fi DEFAULT_DATA="$(cd "$ROOT/.." && pwd)/data" if [[ -d "$DEFAULT_DATA" ]] && ! grep -q '^AS_DATA_LAKE_HOST=' .env 2>/dev/null; then echo "AS_DATA_LAKE_HOST=$DEFAULT_DATA" >> .env echo "已写入 AS_DATA_LAKE_HOST=$DEFAULT_DATA" fi for key_val in \ "CVAT_HOST=http://hsap-cvat-server:8080" \ "CVAT_PUBLIC_URL=http://127.0.0.1:8080" \ "CVAT_PORT=8080"; do key="${key_val%%=*}" if ! grep -q "^${key}=" .env 2>/dev/null; then echo "$key_val" >> .env fi done if [[ ! -f manifests/feishu.env ]]; then cp manifests/feishu.env.example manifests/feishu.env echo "已创建 manifests/feishu.env" fi if [[ ! -f platform/ui-hsap/dist/index.html ]]; then echo "首次启动:构建前端静态包…" bash scripts/build_web.sh fi if ! command -v docker >/dev/null 2>&1; then echo "未安装 Docker。Ubuntu: sudo apt install docker.io docker-compose-v2" exit 1 fi # shellcheck disable=SC1091 [[ -f .env ]] && set -a && source .env && set +a docker compose up -d --build "$@" echo "" echo "服务:" echo " HSAP 平台 ${AS_FRONTEND_URL:-http://127.0.0.1:8787}" echo " CVAT 标注画布 ${CVAT_PUBLIC_URL:-http://127.0.0.1:8080} (由 HSAP 嵌入,无需单独登录)" echo " PostgreSQL localhost:${AS_DB_PORT:-5433}" echo " Redis localhost:${AS_REDIS_PORT:-6380}" echo "" echo "日志: docker compose logs -f platform worker cvat_server" echo "停止: docker compose down"