# 测试方案:Docker 双环境部署与 FRPC 公网映射 测试方案文档路径:`工程分析/测试方案-2026-05-21-10-38-49.md` ## 静态检查 - 检查 Dockerfile 路径、工作目录、复制路径和启动命令。 - 使用 `docker compose -f Docker部署/本机/docker_compose.yaml config` 校验本机 Compose。 - 使用 `docker compose -f Docker部署/威联通NAS/docker_compose.yaml config` 校验 NAS Compose。 - 确认 frpc 配置包含: - `serverAddr = "82.157.255.195"` - `serverPort = 7000` - `auth.token = "en.xjtu.edu.cn"` - `localIP = "revoxelseg_web"` - `localPort = 4000` - `remotePort = 10008` ## 构建检查 - 在 `WebSite/` 下执行 `npm run lint`。 - 在 `WebSite/` 下执行 `npm run build`。 - 使用本机 Compose 执行 Docker 镜像构建。 ## 关键业务场景验证 - 容器启动后访问 `/api/health` 返回 `ok: true`。 - 首页 `/` 返回 `200 OK`。 - 默认项目数据可由容器读取。 - 本机端口 `4000` 可访问。 ## 医学影像数据相关边界验证 - 确认默认 DICOM 与 STL 目录被复制进镜像,运行态数据目录挂载不覆盖默认演示资产。 - 确认 `WebSite/data` 和 `WebSite/exports` 被挂载为持久化目录,避免容器重建后用户项目和导出结果完全丢失。 ## 部署验证 - 停止旧 tmux 服务后,使用本机 Docker Compose 启动服务。 - 验证 `http://127.0.0.1:4000/api/health`。 - 验证 `http://127.0.0.1:4000/`。 - 查看 `revoxelseg_frpc` 日志,确认 frpc 已执行并尝试连接服务端。 ## Git/Gitea 备份验证 - 仅暂存本次 Docker 部署文件与工程分析文档。 - Commit message 包含 `2026-05-21-10-38-49` 与简要描述。 - 推送到 `http://192.168.31.5:5002/admin/REVOXELSEG_DICOM.git`。 ## 风险与回归关注点 - Docker 镜像构建时间和体积受默认医学数据大小影响。 - frpc 公网访问依赖远端 FRP 服务和 NPM 反向代理,若服务端不可用,本机健康检查仍应通过。 - 容器运行后不要再同时启动 tmux 版 4000 服务,以免端口冲突。 ## 实际执行结果 - 已先停止旧 `tmux` 运行服务,4000 端口空闲后再启动 Docker Compose。 - `npm run lint`:通过。 - `npm run build`:通过,仅保留 Vite chunk size 提示。 - `docker compose -f Docker部署/本机/docker_compose.yaml config`:通过,frpc 远端端口为 `10008`。 - `docker compose -f Docker部署/威联通NAS/docker_compose.yaml config`:通过,NAS 版路径展开为 `/share/Container/revoxelseg_dicom`。 - `docker compose -f Docker部署/本机/docker_compose.yaml up -d --build`:通过。 - `revoxelseg_web`:状态 healthy,端口映射为 `0.0.0.0:4000->4000/tcp`。 - `revoxelseg_frpc`:日志显示 `login to server success` 与 `[ReVoxelSeg_DICOM] start proxy success`。 - `curl http://127.0.0.1:4000/api/health`:返回 `{"ok":true,"service":"revoxelseg-dicom"}`。 - `curl http://127.0.0.1:4000/`:返回 `200 OK`。 - `curl http://192.168.3.11:4000/`:返回 `200 OK`。 - `curl https://revoxel.huijutec.cn/`:返回 `200 OK`,响应头包含 `x-served-by: revoxel.huijutec.cn`。