149 lines
5.1 KiB
Markdown
149 lines
5.1 KiB
Markdown
# ReVoxelSeg DICOM Docker 部署说明
|
||
|
||
本目录提供两套 Docker Compose 部署方式:
|
||
|
||
- `本机/docker_compose.yaml`:适合当前开发机或普通 Linux 主机。
|
||
- `威联通NAS/docker_compose.yaml`:适合 QNAP QTS Container Station,使用 `/share/Container/revoxelseg_dicom` 绝对路径。
|
||
|
||
两套 Compose 都包含:
|
||
|
||
- `revoxelseg_web`:ReVoxelSeg DICOM 前后端一体服务,容器端口 `4000`。
|
||
- `revoxelseg_frpc`:FRPC 客户端,将 `revoxelseg_web:4000` 映射到 `82.157.255.195` 的远程端口 `10008`。
|
||
|
||
当前 Docker 构建会同步包含以下能力:
|
||
|
||
- 二维逆向分割映射按实体填充显示,rib、skin 等薄壳或细长构件会做局部实体化兜底,导出的分割 Label Map 也按填充区域写入。
|
||
- 模型位姿支持以模型中心沿 X/Y/Z 轴镜像翻转,平移和缩放单击支持 `0.001` 级微调,长按加减会加速连续调整;保存、项目库预览和导出均沿用该位姿;自动拉伸完成后不再在位姿区保留成功提示。
|
||
- “构件分别导出”会把所有构件 NIfTI 文件集中到导出包内的 `segmentation-parts/` 目录。
|
||
- 项目库 DICOM 首页支持滚轮缩放、拖拽平移和位置重置。
|
||
- 项目库与工作区的 DICOM 切片编号按医学影像顺序显示,滑条使用非进度条样式。
|
||
- 项目库支持锁定/解锁项目、筛选未上锁项目,并在锁定时保存位姿快照到 `项目数据/锁定结果/`。
|
||
- 逆向工作区“构件层级”支持一键显示或隐藏全部构件;切片滑条顶部为第 1 张,向下查看到第 N 张。
|
||
- 逆向分割映射视图按当前可见构件加载高精度 STL 预览,并始终用全部 STL 边界保持统一模型坐标系;实体模式最高使用 80 万三角面预览,“可见类别 + 构件分别导出”严格只导出当前眼睛打开的构件。
|
||
|
||
## 一、本机部署
|
||
|
||
在项目根目录执行:
|
||
|
||
```bash
|
||
docker compose -f Docker部署/本机/docker_compose.yaml up -d --build
|
||
```
|
||
|
||
查看状态:
|
||
|
||
```bash
|
||
docker compose -f Docker部署/本机/docker_compose.yaml ps
|
||
docker compose -f Docker部署/本机/docker_compose.yaml logs -f revoxelseg_web
|
||
docker compose -f Docker部署/本机/docker_compose.yaml logs -f revoxelseg_frpc
|
||
```
|
||
|
||
访问地址:
|
||
|
||
```text
|
||
http://192.168.3.11:4000/
|
||
http://127.0.0.1:4000/
|
||
```
|
||
|
||
公网访问需等待 FRPC 在线,并确认 NPM 反向代理已将 `revoxel.huijutec.cn` 转发到 FRP 服务端 `10008`:
|
||
|
||
```text
|
||
https://revoxel.huijutec.cn/
|
||
```
|
||
|
||
停止:
|
||
|
||
```bash
|
||
docker compose -f Docker部署/本机/docker_compose.yaml down
|
||
```
|
||
|
||
## 二、威联通 NAS / QTS Container Station 部署
|
||
|
||
建议把完整项目放到:
|
||
|
||
```text
|
||
/share/Container/revoxelseg_dicom
|
||
```
|
||
|
||
然后在 QTS Container Station 中创建应用,选择或粘贴:
|
||
|
||
```text
|
||
/share/Container/revoxelseg_dicom/Docker部署/威联通NAS/docker_compose.yaml
|
||
```
|
||
|
||
也可通过 SSH 执行:
|
||
|
||
```bash
|
||
cd /share/Container/revoxelseg_dicom
|
||
docker compose -f Docker部署/威联通NAS/docker_compose.yaml up -d --build
|
||
```
|
||
|
||
如果项目目录不是 `/share/Container/revoxelseg_dicom`,需要同步修改 NAS Compose 中:
|
||
|
||
- `build.context`
|
||
- `/share/Container/revoxelseg_dicom/data`
|
||
- `/share/Container/revoxelseg_dicom/exports`
|
||
- `/share/Container/revoxelseg_dicom/locked-results`
|
||
|
||
## 三、数据持久化
|
||
|
||
容器内路径:
|
||
|
||
- `/app/WebSite/data`:项目状态、上传数据和导入缓存。
|
||
- `/app/WebSite/exports`:导出的 NII/NII.GZ/TAR.GZ 文件。
|
||
- `/app/项目数据/锁定结果`:项目锁定时保存的位姿与构件样式快照。
|
||
|
||
本机部署会挂载到:
|
||
|
||
- `Docker部署/本机/data`
|
||
- `Docker部署/本机/exports`
|
||
- `Docker部署/本机/locked-results`
|
||
|
||
NAS 部署会挂载到:
|
||
|
||
- `/share/Container/revoxelseg_dicom/data`
|
||
- `/share/Container/revoxelseg_dicom/exports`
|
||
- `/share/Container/revoxelseg_dicom/locked-results`
|
||
|
||
默认演示数据 `Head_CT_DICOM/` 与 `Head_CT_ReConstruct/` 会复制进镜像,用于新环境首次启动后的默认项目。
|
||
|
||
## 四、FRPC 映射
|
||
|
||
Compose 中内置的 FRPC 配置为:
|
||
|
||
```toml
|
||
serverAddr = "82.157.255.195"
|
||
serverPort = 7000
|
||
|
||
auth.method = "token"
|
||
auth.token = "en.xjtu.edu.cn"
|
||
|
||
transport.poolCount = 5
|
||
transport.heartbeatTimeout = -1
|
||
|
||
[[proxies]]
|
||
name = "ReVoxelSeg_DICOM"
|
||
type = "tcp"
|
||
localIP = "revoxelseg_web"
|
||
localPort = 4000
|
||
remotePort = 10008
|
||
```
|
||
|
||
如果远端端口或代理名称调整,只需修改两份 `docker_compose.yaml` 中 `revoxelseg_frpc` 的内嵌配置。
|
||
|
||
## 五、旧 tmux 部署回退
|
||
|
||
若需要临时回退到旧部署方式:
|
||
|
||
```bash
|
||
docker compose -f Docker部署/本机/docker_compose.yaml down
|
||
cd WebSite
|
||
npm run build
|
||
npm run serve -- --host 0.0.0.0 --port 4000
|
||
```
|
||
|
||
## 六、2026-05-24 交互修正
|
||
|
||
- 逆向工作区切换构件层级时,可见 STL 构件会显示加载进度,避免高精度预览加载期间误判为构件不显示。
|
||
- DICOM 与逆向分割映射画布的滚轮缩放使用非被动 wheel 监听,修正浏览器控制台 `Unable to preventDefault inside passive event listener invocation` 警告。
|
||
- rib、skin 等薄壳或细长构件在实体模式和逆向分割映射视图中使用更高精度 STL 预览,并增加局部厚度填充,避免只显示散点或单像素线段。
|