Files
HSAP/docs/DEPLOY.md
Chengfang Lu 7f3b84faf0 docs: DEPLOY 增加接手人环境差异清单(均可本机自行解决)
说明勿拷贝开发者 .env/feishu.env、常见排障与部署前自检,明确不绑定单机环境。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-16 17:40:14 +08:00

256 lines
8.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HSAP 部署指南(新机器 / 他人电脑)
本文档面向 **从 Git 克隆后在全新 Linux 机器上启动 HSAP**(平台 + CVAT + PostgreSQL + Redis
---
## 1. 环境要求
| 组件 | 版本 |
|------|------|
| Docker | 20.10+ |
| Docker Compose | v2`docker compose` 子命令) |
| Node.js + npm | 18+(仅构建前端;运行期不需要) |
| 磁盘 | 建议 ≥ 20GB含 CVAT 镜像与数据卷) |
| 内存 | 建议 ≥ 8GB |
Ubuntu 示例:
```bash
sudo apt update
sudo apt install -y docker.io docker-compose-v2 git nodejs npm
sudo usermod -aG docker $USER # 重新登录后生效
```
---
## 2. 克隆与初始化
```bash
git clone https://git.sanyele.com/ChengFang.LU/HSAP.git
cd HSAP
bash scripts/init_after_clone.sh
```
脚本会:
-`.env.example` 生成 `.env`
-`manifests/feishu.env.example` 生成 `manifests/feishu.env`
- 若上级目录存在 `workspace/``data/`,自动写入挂载路径
- 首次构建前端 → `platform/ui-hsap/dist/`
- **植入 `lake/lake_example` 样例送标批次** → 数据湖 inbox接手人可直接走流程
---
## 3.5 样例送标数据lake_example
`init_after_clone.sh` 已自动执行 `scripts/seed_lake_example.sh`。也可单独重跑:
```bash
bash scripts/seed_lake_example.sh
```
推荐验收批次:
| 类型 | 批次名 |
|------|--------|
| ADAS 2D | `20260616_adas2d_pilot` |
| ADAS 3D | `20260616_3d_pilot` |
| DMS | `20260616_addw_pilot` |
平台启动后:**批次台账 → 扫描数据湖 → 登记 → 送标工作台开标**。详见 [README 接手流程](../README.md#接手走通送标流程lake_example)。
---
## 3. 必改配置
### 3.1 `.env`Docker Compose
```bash
cp .env.example .env
nano .env
```
| 变量 | 说明 |
|------|------|
| `AS_WORKSPACE_ROOT` | DMS/Lane 大文件目录(宿主机绝对路径) |
| `AS_DATA_LAKE_HOST` | 送标数据湖根目录,下有 `送标/adas``送标/dms` 等 |
| `AS_FRONTEND_URL` | 浏览器访问 HSAP 的完整 URL局域网用 `http://<IP>:8787` |
| `CVAT_PUBLIC_URL` | 浏览器访问 CVAT 的 URL通常 `http://<IP>:8080` |
| `FEISHU_REDIRECT_URI` | 飞书回调,与 `AS_FRONTEND_URL` 同源 |
| `AS_DB_PORT` / `AS_REDIS_PORT` | 宿主机端口冲突时修改(默认 5433 / 6380 |
### 3.2 `manifests/feishu.env`(认证)
**开发 / 内网演示**(无需飞书):
```env
AS_DEV_AUTH=true
AS_JWT_SECRET=请更换为随机长字符串
```
**生产飞书登录**:填入 `FEISHU_APP_ID``FEISHU_APP_SECRET`,并将 `AS_DEV_AUTH=false`
---
## 4. 数据目录布局
推荐与仓库平级:
```text
DATA/
├── HSAP/ # 本仓库
├── workspace/ # AS_WORKSPACE_ROOT
│ ├── DMS/
│ └── LaneDection/
└── data/ # AS_DATA_LAKE_HOST
└── 送标/
├── adas/
│ └── inbox/
│ ├── det_7cls/ # ADAS 2D 七类
│ └── cuboid_7cls/ # ADAS 3D Cuboid
└── dms/
└── inbox/
```
inbox 目录结构示例见仓库内 `lake/lake_example/`
`.env` 示例:
```env
AS_WORKSPACE_ROOT=/opt/DATA/workspace
AS_DATA_LAKE_HOST=/opt/DATA/data
AS_FRONTEND_URL=http://192.168.1.50:8787
CVAT_PUBLIC_URL=http://192.168.1.50:8080
FEISHU_REDIRECT_URI=http://192.168.1.50:8787/api/v1/auth/feishu/callback
```
---
## 5. 启动
```bash
bash scripts/dev_up.sh
# 或
make up
```
单文件编排:`docker-compose.yml` 已包含 **平台 + CVAT 全套服务**,无需 `-f` 多文件。
| 服务 | 默认地址 |
|------|----------|
| HSAP 平台 | http://127.0.0.1:8787 |
| CVAT 画布 | http://127.0.0.1:8080 |
| PostgreSQL | localhost:5433 |
| Redis | localhost:6380 |
健康检查:
```bash
make health
docker compose ps
```
---
## 6. 前端更新
修改 `platform/web/` 后须重新构建并重启:
```bash
bash scripts/build_web.sh
docker compose restart platform
```
---
## 7. 常用运维
```bash
docker compose logs -f platform worker cvat_server
docker compose down
docker compose up -d --build # 拉代码后重建
bash scripts/reset_labeling.sh # 清空标注 DB保留账号
```
可选 MinIO 暂存:
```bash
docker compose --profile minio up -d
```
---
## 8. 排障
| 现象 | 处理 |
|------|------|
| 8787 白屏 / 旧 UI | `bash scripts/build_web.sh && docker compose restart platform` |
| 标注页 CVAT 无法嵌入 | 检查 `CVAT_PUBLIC_URL``AS_FRONTEND_URL` 是否为浏览器实际访问地址 |
| `CVAT 标注引擎不可用` | `docker compose ps`,确认 `hsap-cvat-server``hsap-cvat-traefik` 为 Up |
| 送标扫描不到批次 | 确认 `AS_DATA_LAKE_HOST` 挂载正确,`送标/adas/inbox/...` 路径存在 |
| 端口冲突 | 修改 `.env``AS_PLATFORM_PORT``CVAT_PORT``AS_DB_PORT``AS_REDIS_PORT` |
更多架构与 API 说明见 [HANDOVER.md](HANDOVER.md)。
---
## 9. 开发机 vs 接手人环境(均可本机自行解决)
以下条目是 **环境差异**,不是仓库缺陷。每一项都可以在接手人自己的主机上通过配置或一次性命令解决;按 `init_after_clone.sh``dev_up.sh` 走,**送标样例流程不依赖开发者的个人目录或数据**。
### 9.1 不要从开发者机器拷贝的文件
| 文件 | 原因 | 接手人做法 |
|------|------|------------|
| `.env` | 含开发者绝对路径(如 `/home/xxx/DATA/...` | 用 `init``.env.example` 生成,再按本机改路径 |
| `manifests/feishu.env` | 含飞书 Secret、个人 admin open_id | 用 `feishu.env.example` 复制;验收阶段保持 `AS_DEV_AUTH=true` 即可 |
### 9.2 首次部署常见差异
| 现象 | 原因 | 本机解决 |
|------|------|----------|
| 8787 白屏 | `platform/ui-hsap/dist` 不在 Git | 安装 Node 18+ 后 `bash scripts/build_web.sh``init` 会尝试) |
| `docker: permission denied` | 用户不在 `docker` 组 | `sudo usermod -aG docker $USER` 后重新登录 |
| 样例 DMS 拷不进 inbox | 曾用 root 跑过 Docker`inbox` 属主为 root | `sudo chown -R $USER datasets/dms/inbox` 后重跑 `seed_lake_example.sh` |
| 扫描不到 ADAS 批次 | `datasets/adas` 软链或 `data/送标/adas` 未建 | 重跑 `bash scripts/seed_lake_example.sh`;确认 `AS_DATA_LAKE_HOST` |
| 首次 `up` 很慢 | 需拉 CVAT / ClickHouse 等大镜像 | 保证能访问 Docker Hub等待拉取完成 |
| 端口被占用 | 8787 / 8080 / 5433 / 6380 冲突 | 改 `.env` 对应端口后 `docker compose up -d` |
| CVAT iframe 空白(局域网) | 浏览器用 IP 访问,`.env` 仍是 `127.0.0.1` | 改 `AS_FRONTEND_URL``CVAT_PUBLIC_URL` 为实际 `http://<IP>:端口` |
| 车队地图无瓦片 | 未配高德 Key | 可选:`.env``AS_AMAP_KEY`;不影响送标主流程 |
| `git clone` 失败 | 无 git.sanyele.com 权限 | HTTPS + Gitea Token或登记 SSH 公钥 |
### 9.3 本就不随 Git 带走的内容(新机器为空是正常的)
| 内容 | 说明 |
|------|------|
| Docker 卷 `hsap_*` | 用户、标注任务、CVAT 数据;新环境需重新「扫描 → 登记 → 开标」 |
| `workspace/` 训练大图 | 仅训练需要;`lake_example` 已覆盖送标验收 |
| 开发者 `data/送标/` 真实批次 | 生产数据各自挂载;样例在 `lake/lake_example/` |
### 9.4 部署前自检(复制执行)
```bash
docker --version && docker compose version
node -v && npm -v # 建议 Node 18+
groups | grep -q docker && echo OK # 或在 docker 组
cd HSAP
bash scripts/init_after_clone.sh
bash scripts/dev_up.sh
make health
# 浏览器8787 → 开发登录 → 批次台账应能扫到 20260616_adas2d_pilot
```
### 9.5 可选能力(验收样例不强制)
| 能力 | 何时需要 |
|------|----------|
| `AS_WORKSPACE_ROOT` | DMS/Lane 训练、大图 promote |
| 飞书 OAuth | 关闭 `AS_DEV_AUTH`、走正式登录与任务通知 |
| `AS_AMAP_KEY` | 车队地图国内底图完整显示 |
| MinIO profile | S3 暂存联调 |
**结论:** 仓库不绑定某一台开发机路径、端口、认证、Docker 权限均在接手人本机配置即可跑通。