2026-05-21-14-19-12 记录Docker三版本Release发布
This commit is contained in:
65
工程分析/实现方案-2026-05-21-14-19-12.md
Normal file
65
工程分析/实现方案-2026-05-21-14-19-12.md
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
# 实现方案:Gitea Releases 发布三种 Docker 部署版本
|
||||||
|
|
||||||
|
实现方案文档路径:`工程分析/实现方案-2026-05-21-14-19-12.md`
|
||||||
|
|
||||||
|
## 修改目标
|
||||||
|
|
||||||
|
在 Gitea Releases 页面发布三种可下载 Docker 部署版本,并保证三种版本的根目录部署入口一致。
|
||||||
|
|
||||||
|
## 涉及路径
|
||||||
|
|
||||||
|
主项目:
|
||||||
|
|
||||||
|
- `工程分析/需求分析-2026-05-21-14-19-12.md`
|
||||||
|
- `工程分析/实现方案-2026-05-21-14-19-12.md`
|
||||||
|
- `工程分析/测试方案-2026-05-21-14-19-12.md`
|
||||||
|
- `工程分析/经验记录.md`
|
||||||
|
|
||||||
|
独立 Docker 程序包:
|
||||||
|
|
||||||
|
- `~/Desktop/ReVoxelSeg_DICOM_Docker/docker_compose.yaml`
|
||||||
|
- `~/Desktop/ReVoxelSeg_DICOM_Docker/docker_compose.nas.yaml`
|
||||||
|
- `~/Desktop/ReVoxelSeg_DICOM_Docker/.env.example`
|
||||||
|
- `~/Desktop/ReVoxelSeg_DICOM_Docker/README.md`
|
||||||
|
|
||||||
|
## 技术路线
|
||||||
|
|
||||||
|
1. 在独立 Docker 程序包仓库中基于 `docker-standalone-20260521` 创建三个发布分支。
|
||||||
|
2. 机器版:
|
||||||
|
- 使用当前本机 `docker_compose.yaml`。
|
||||||
|
- 创建 tag `revoxelseg-docker-machine-v2026.05.21`。
|
||||||
|
3. NAS 版:
|
||||||
|
- 将 `docker_compose.nas.yaml` 内容复制为根目录 `docker_compose.yaml`。
|
||||||
|
- 更新 README 为 NAS 直接部署入口。
|
||||||
|
- 创建 tag `revoxelseg-docker-nas-v2026.05.21`。
|
||||||
|
4. 通用版:
|
||||||
|
- 改写 `docker_compose.yaml`,使用环境变量占位 FRPC 配置。
|
||||||
|
- 添加 `.env.example`。
|
||||||
|
- README 说明用户需自行填写 `.env`。
|
||||||
|
- 创建 tag `revoxelseg-docker-generic-v2026.05.21`。
|
||||||
|
5. 推送三个分支和三个 tag 到 Gitea。
|
||||||
|
6. 通过 Gitea API 创建三个 Release。
|
||||||
|
|
||||||
|
## 执行步骤
|
||||||
|
|
||||||
|
1. 检查独立 Docker 目录 Git 状态。
|
||||||
|
2. 创建发布分支和 tag。
|
||||||
|
3. 对三种版本分别运行 `docker compose -f docker_compose.yaml config`。
|
||||||
|
4. 推送分支和 tag。
|
||||||
|
5. 使用 Gitea API `POST /api/v1/repos/admin/REVOXELSEG_DICOM/releases` 创建 Release。
|
||||||
|
6. 使用 Gitea API 查询 Release 列表,确认三个版本存在。
|
||||||
|
7. 更新测试方案和经验记录。
|
||||||
|
|
||||||
|
## 兼容性与回滚方案
|
||||||
|
|
||||||
|
- 若 Release 创建失败,可以保留已推送 tag,重新调用 API 创建 Release。
|
||||||
|
- 若某个版本配置错误,可新建修订 tag,而不是强推覆盖旧 tag。
|
||||||
|
- 当前正在运行的独立 Docker 容器不依赖工作树后续分支切换,不会因创建发布分支中断服务。
|
||||||
|
|
||||||
|
## 预计文件变更
|
||||||
|
|
||||||
|
独立 Docker 仓库新增发布分支/tag;主项目新增工程分析文档和经验记录。
|
||||||
|
|
||||||
|
## 提交与部署策略
|
||||||
|
|
||||||
|
本次不改业务源码,不需要重新构建前端。发布验证以 Compose config、健康接口和 Gitea Release 查询为主。主项目 `main` 只提交工程分析文档。
|
||||||
72
工程分析/测试方案-2026-05-21-14-19-12.md
Normal file
72
工程分析/测试方案-2026-05-21-14-19-12.md
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
# 测试方案:Gitea Releases 发布三种 Docker 部署版本
|
||||||
|
|
||||||
|
测试方案文档路径:`工程分析/测试方案-2026-05-21-14-19-12.md`
|
||||||
|
|
||||||
|
## 静态检查
|
||||||
|
|
||||||
|
- 检查三个版本 tag 是否存在。
|
||||||
|
- 检查三个 Release 是否存在。
|
||||||
|
- 检查通用版不包含具体 FRPC 地址、token、远端端口和域名。
|
||||||
|
- 检查三种版本根目录均有 `docker_compose.yaml`。
|
||||||
|
|
||||||
|
## 构建检查
|
||||||
|
|
||||||
|
- 对机器版执行 `docker compose -f docker_compose.yaml config`。
|
||||||
|
- 对 NAS 版执行 `docker compose -f docker_compose.yaml config`。
|
||||||
|
- 对通用版执行 `docker compose --env-file .env.example -f docker_compose.yaml config`。
|
||||||
|
|
||||||
|
## 关键业务场景验证
|
||||||
|
|
||||||
|
- 当前独立 Docker 服务仍可通过 `/api/health` 正常响应。
|
||||||
|
- `https://revoxel.huijutec.cn/` 当前入口仍可访问。
|
||||||
|
- Release 下载用户可依据 README 使用对应 Compose 启动。
|
||||||
|
|
||||||
|
## 医学影像数据相关边界验证
|
||||||
|
|
||||||
|
- 发布分支仍包含默认 `Head_CT_DICOM/` 和 `Head_CT_ReConstruct/`。
|
||||||
|
- 发布分支不包含 `data/`、`exports/`、`WebSite/node_modules/`、`WebSite/dist/` 等运行态和构建产物。
|
||||||
|
|
||||||
|
## 部署验证
|
||||||
|
|
||||||
|
- 不重新启动服务;保持当前独立 Docker 服务运行。
|
||||||
|
- 使用 `curl http://127.0.0.1:4000/api/health` 验证服务状态。
|
||||||
|
- 使用 `curl https://revoxel.huijutec.cn/` 验证公网入口。
|
||||||
|
|
||||||
|
## Git/Gitea 备份验证
|
||||||
|
|
||||||
|
- 推送三个发布分支和三个 tag。
|
||||||
|
- 使用 Gitea API 创建三个 Release。
|
||||||
|
- 使用 Gitea API 查询 Release 列表确认发布成功。
|
||||||
|
- 主项目工程分析记录 commit message 包含 `2026-05-21-14-19-12`。
|
||||||
|
|
||||||
|
## 风险与回归关注点
|
||||||
|
|
||||||
|
- 通用版删除具体 FRPC 信息后不能直接公网访问,需使用者自行填写 `.env`。
|
||||||
|
- Gitea Release 的源码包较大,下载时间与网络有关。
|
||||||
|
- 不应把 Gitea 管理员密码写入任何文件或 Release 正文。
|
||||||
|
|
||||||
|
## 实际执行结果
|
||||||
|
|
||||||
|
- 已创建并推送发布分支:
|
||||||
|
- `release/docker-machine-20260521`
|
||||||
|
- `release/docker-nas-20260521`
|
||||||
|
- `release/docker-generic-20260521`
|
||||||
|
- 已创建并推送 tag:
|
||||||
|
- `revoxelseg-docker-machine-v2026.05.21`,目标提交 `57415a1`
|
||||||
|
- `revoxelseg-docker-nas-v2026.05.21`,目标提交 `ce78e3e`
|
||||||
|
- `revoxelseg-docker-generic-v2026.05.21`,目标提交 `3ad83a6`
|
||||||
|
- 机器版 `docker_compose.yaml` 配置校验通过。
|
||||||
|
- NAS 版 `docker_compose.yaml` 配置校验通过。
|
||||||
|
- 通用版 `docker_compose.yaml` 配置校验通过。
|
||||||
|
- 通用版启用 `--profile frpc` 后配置校验通过。
|
||||||
|
- 通用版全目录检查未发现固定 FRPC 服务地址、固定 token、远端端口 `10008`、固定公网域名或本机固定内网地址。
|
||||||
|
- 已通过 Gitea API 创建 Release:
|
||||||
|
- `ReVoxelSeg DICOM Docker 机器直接部署版 v2026.05.21`
|
||||||
|
- `ReVoxelSeg DICOM Docker NAS 直接部署版 v2026.05.21`
|
||||||
|
- `ReVoxelSeg DICOM Docker 通用版 v2026.05.21`
|
||||||
|
- Gitea API 查询确认三个 Release 均存在:
|
||||||
|
- `https://gitea.huijutec.cn/admin/REVOXELSEG_DICOM/releases/tag/revoxelseg-docker-machine-v2026.05.21`
|
||||||
|
- `https://gitea.huijutec.cn/admin/REVOXELSEG_DICOM/releases/tag/revoxelseg-docker-nas-v2026.05.21`
|
||||||
|
- `https://gitea.huijutec.cn/admin/REVOXELSEG_DICOM/releases/tag/revoxelseg-docker-generic-v2026.05.21`
|
||||||
|
- 当前独立 Docker 服务健康检查通过:`/api/health` 返回 `ok: true`。
|
||||||
|
- 当前公网入口 `https://revoxel.huijutec.cn/` 返回 `200 OK`。
|
||||||
18
工程分析/经验记录.md
18
工程分析/经验记录.md
@@ -1531,3 +1531,21 @@ C. 解决问题方案
|
|||||||
D. 后续如何避免问题
|
D. 后续如何避免问题
|
||||||
|
|
||||||
后续若维护 Docker 独立包,应优先在 `ReVoxelSeg_DICOM_Docker` 目录内修改和验证,不要依赖主工程相对路径。根目录 Compose 文件中,本机版保留为 `docker_compose.yaml`,NAS 版使用 `docker_compose.nas.yaml`,避免同名文件冲突。独立分支内容结构与 main 不同,推送前必须检查目录纯净度,确认不含工程分析、软著材料、node_modules、dist、data、exports 等无关内容。
|
后续若维护 Docker 独立包,应优先在 `ReVoxelSeg_DICOM_Docker` 目录内修改和验证,不要依赖主工程相对路径。根目录 Compose 文件中,本机版保留为 `docker_compose.yaml`,NAS 版使用 `docker_compose.nas.yaml`,避免同名文件冲突。独立分支内容结构与 main 不同,推送前必须检查目录纯净度,确认不含工程分析、软著材料、node_modules、dist、data、exports 等无关内容。
|
||||||
|
|
||||||
|
## 2026-05-21-14-19-12 Release 多版本发布要用 tag 固化配置差异
|
||||||
|
|
||||||
|
A. 具体问题
|
||||||
|
|
||||||
|
用户要求在 Gitea Releases 中发布机器直接部署版、NAS 直接部署版和通用版三个版本。其中通用版必须删除具体 FRPC 反向代理信息,避免固定服务地址、token、远端端口和公网域名限制其他环境使用。
|
||||||
|
|
||||||
|
B. 产生问题原因
|
||||||
|
|
||||||
|
独立 Docker 包的 `docker_compose.yaml` 默认面向当前机器部署,`docker_compose.nas.yaml` 面向 QNAP 绝对路径部署;如果只发布同一个分支源码包,用户下载后仍需判断使用哪个 Compose,通用版也会夹带当前环境的 FRPC 敏感配置。Gitea Release 又是以 tag 为版本锚点,必须为不同部署语义固定不同 tag。
|
||||||
|
|
||||||
|
C. 解决问题方案
|
||||||
|
|
||||||
|
在独立 Docker 仓库中从 `docker-standalone-20260521` 派生三个发布分支:机器版保留当前本机根目录 `docker_compose.yaml`;NAS 版将 NAS Compose 复制为根目录 `docker_compose.yaml`;通用版重写根目录 `docker_compose.yaml`,使用 `.env.example` 和环境变量占位 FRPC 信息,并删除固定 NAS Compose。随后为三种配置分别创建 tag,通过 Gitea API 创建三个 Release。发布前对三种 Compose 执行 `docker compose config`,并用 `rg` 检查通用版不含固定 FRPC 信息。
|
||||||
|
|
||||||
|
D. 后续如何避免问题
|
||||||
|
|
||||||
|
以后发布多部署形态时,不要只改 Release 文案;应使用不同 tag 固化不同文件状态。包含具体环境配置的版本可以保留当前内网、域名和 FRPC 信息;通用版本必须使用环境变量或占位模板,并在发布前全目录搜索确认没有遗留服务地址、token、远端端口和固定域名。创建 Gitea Release 后,应再通过 API 或页面确认 Release、tag 和目标提交一致。
|
||||||
|
|||||||
62
工程分析/需求分析-2026-05-21-14-19-12.md
Normal file
62
工程分析/需求分析-2026-05-21-14-19-12.md
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
# 需求分析:Gitea Releases 发布三种 Docker 部署版本
|
||||||
|
|
||||||
|
开始时间:2026-05-21-14-19-12
|
||||||
|
|
||||||
|
## 原始需求摘要
|
||||||
|
|
||||||
|
用户要求在 `https://gitea.huijutec.cn/admin/REVOXELSEG_DICOM/releases` 发布三个版本:
|
||||||
|
|
||||||
|
- 机器直接部署版本。
|
||||||
|
- NAS 直接部署版本。
|
||||||
|
- 通用版本,删除其中具体的 FRPC 反向代理地址、token、端口和域名信息,使其适配其他需求和环境。
|
||||||
|
|
||||||
|
## 业务目标
|
||||||
|
|
||||||
|
让使用者可以直接从 Gitea Release 页面下载对应部署版本,分别用于当前本机、威联通 NAS 和通用 Docker 环境部署,减少手动挑选 Compose 文件和替换敏感配置的操作。
|
||||||
|
|
||||||
|
## 输入与输出
|
||||||
|
|
||||||
|
输入:
|
||||||
|
|
||||||
|
- 独立 Docker 程序包目录:`~/Desktop/ReVoxelSeg_DICOM_Docker`。
|
||||||
|
- 已推送 Gitea 分支:`docker-standalone-20260521`。
|
||||||
|
- 当前机器版和 NAS 版 Compose 配置。
|
||||||
|
|
||||||
|
输出:
|
||||||
|
|
||||||
|
- Gitea Release:机器直接部署版本。
|
||||||
|
- Gitea Release:NAS 直接部署版本。
|
||||||
|
- Gitea Release:通用版本。
|
||||||
|
- 对应 Git tag 与 release 分支。
|
||||||
|
- 工程分析记录和经验记录。
|
||||||
|
|
||||||
|
## 影响范围
|
||||||
|
|
||||||
|
- 独立 Docker 程序包仓库会新增发布分支和 tag。
|
||||||
|
- Gitea Releases 页面新增三个 Release。
|
||||||
|
- 主项目仅提交本次工程分析文档。
|
||||||
|
|
||||||
|
## 关键约束
|
||||||
|
|
||||||
|
- 三个 Release 下载后的根目录都应有 `docker_compose.yaml`。
|
||||||
|
- 机器版保留当前本机和 FRPC 具体配置。
|
||||||
|
- NAS 版使用 NAS/QTS 绝对路径和当前 FRPC 具体配置。
|
||||||
|
- 通用版不能包含具体 FRPC 服务地址、token、远端端口和域名,应使用 `.env.example` 和环境变量占位。
|
||||||
|
- 不重复提交软著材料、工程分析目录到独立 Docker 版本中。
|
||||||
|
|
||||||
|
## 风险点
|
||||||
|
|
||||||
|
- Gitea Release 依赖 tag;若 tag 重名需先检查并避免覆盖已有发布。
|
||||||
|
- Gitea 自动源码包包含完整默认 DICOM/STL 数据,下载体积较大。
|
||||||
|
- 通用版移除具体 FRPC 配置后,用户必须自行填写 `.env` 或修改 Compose 才能启用公网映射。
|
||||||
|
|
||||||
|
## 默认假设
|
||||||
|
|
||||||
|
- 使用三个 tag:
|
||||||
|
- `revoxelseg-docker-machine-v2026.05.21`
|
||||||
|
- `revoxelseg-docker-nas-v2026.05.21`
|
||||||
|
- `revoxelseg-docker-generic-v2026.05.21`
|
||||||
|
- 为避免 Release 之间源码结构混淆,分别创建轻量发布分支:
|
||||||
|
- `release/docker-machine-20260521`
|
||||||
|
- `release/docker-nas-20260521`
|
||||||
|
- `release/docker-generic-20260521`
|
||||||
Reference in New Issue
Block a user