# 01 架构说明 ## 服务拓扑 最小 Docker 部署由 6 个服务组成: | 服务 | 作用 | 对外端口 | |------|------|----------| | `frontend` | Nginx 托管 React 生产构建 | `3000 -> 80` | | `backend` | FastAPI API、WebSocket、数据库初始化、默认模板 seed | `8000 -> 8000` | | `worker` | Celery 后台任务,执行拆帧、DICOM 解析、传播任务 | 无 | | `postgres` | PostgreSQL 业务数据库 | 不默认暴露 | | `redis` | Celery broker/result backend 和进度事件 | 不默认暴露 | | `minio` | 上传媒体、帧图片、导出素材对象存储 | `9000` / `9001` | ## 数据持久化 Compose 使用两个命名卷: - `postgres-data`:数据库。 - `minio-data`:对象存储。 项目目录下还有两个可选挂载目录: - `models/`:SAM2 权重。 - `demo/`:演示视频和 DICOM 序列。 ## 前后端地址推导 前端运行在浏览器中,默认按当前页面 hostname 推导后端地址: - `http://<页面hostname>:8000` - WebSocket: `ws://<页面hostname>:8000/ws/progress` 因此局域网部署时,应使用同一个 `PUBLIC_HOST` 访问前端、后端和 MinIO。 ## MinIO 公网地址 后端上传/下载对象使用内部地址: ```text MINIO_ENDPOINT=minio:9000 ``` 生成给浏览器使用的预签名 URL 使用公网地址: ```text MINIO_PUBLIC_ENDPOINT=:9000 ``` 这是 Docker 部署包对原项目做的最小部署适配,避免浏览器拿到 `http://minio:9000/...` 这种不可解析地址。