# 实现方案:独立 Docker 程序目录与 Gitea 分支存储 实现方案文档路径:`工程分析/实现方案-2026-05-21-11-13-49.md` ## 修改目标 在 `~/Desktop/ReVoxelSeg_DICOM_Docker` 生成可独立运行的 Docker 程序包,并将其作为 Gitea 新分支 `docker-standalone-20260521` 推送。 ## 涉及路径 主项目: - `工程分析/需求分析-2026-05-21-11-13-49.md` - `工程分析/实现方案-2026-05-21-11-13-49.md` - `工程分析/测试方案-2026-05-21-11-13-49.md` - `工程分析/经验记录.md` 独立 Docker 程序目录: - `~/Desktop/ReVoxelSeg_DICOM_Docker/WebSite/` - `~/Desktop/ReVoxelSeg_DICOM_Docker/Head_CT_DICOM/` - `~/Desktop/ReVoxelSeg_DICOM_Docker/Head_CT_ReConstruct/` - `~/Desktop/ReVoxelSeg_DICOM_Docker/Dockerfile` - `~/Desktop/ReVoxelSeg_DICOM_Docker/.dockerignore` - `~/Desktop/ReVoxelSeg_DICOM_Docker/.gitignore` - `~/Desktop/ReVoxelSeg_DICOM_Docker/docker_compose.yaml` - `~/Desktop/ReVoxelSeg_DICOM_Docker/docker_compose.nas.yaml` - `~/Desktop/ReVoxelSeg_DICOM_Docker/README.md` ## 技术路线 1. 从主项目复制必要运行内容到独立目录: - 复制 `WebSite/`,排除 `node_modules`、`dist`、`data`、`exports` 和本地环境文件。 - 复制默认演示数据 `Head_CT_DICOM/`、`Head_CT_ReConstruct/`。 2. 将 Dockerfile 调整为独立目录根构建: - `COPY WebSite/package*.json ./WebSite/` - `COPY WebSite ./WebSite` - `COPY Head_CT_DICOM ./Head_CT_DICOM` - `COPY Head_CT_ReConstruct ./Head_CT_ReConstruct` 3. 根目录放置两份 Compose: - `docker_compose.yaml`:本机部署,挂载 `./data` 与 `./exports`。 - `docker_compose.nas.yaml`:NAS 部署,默认绝对路径 `/share/Container/revoxelseg_dicom`。 4. 在独立目录初始化 Git 仓库并推送到 Gitea 新分支。 5. 对独立目录执行 Compose 配置校验和构建验证。 ## 执行步骤 1. 清理并重建 `~/Desktop/ReVoxelSeg_DICOM_Docker`。 2. 使用 `rsync` 复制必要目录并排除运行态产物。 3. 写入根目录 Docker 部署文件。 4. 执行 `docker compose -f docker_compose.yaml config` 与 `docker compose -f docker_compose.nas.yaml config`。 5. 执行 `docker compose -f docker_compose.yaml build` 或 `up -d --build` 验证独立目录可用。 6. 验证本机端口与健康接口。 7. 初始化独立目录 Git 仓库,创建 `docker-standalone-20260521` 分支并推送。 8. 主项目提交工程分析记录。 ## 兼容性与回滚方案 - 若独立 Docker 目录构建失败,不影响当前主项目目录和已运行的 Docker 服务。 - 若 Gitea 分支推送失败,可保留本地独立目录,并重新执行 `git push origin docker-standalone-20260521`。 - 若 NAS 路径不同,修改 `docker_compose.nas.yaml` 中的 `build.context` 和 volume 宿主机路径。 ## 预计文件变更 主项目仅新增/更新工程分析文档;独立目录为新建自包含 Docker 程序包。 ## 提交与部署策略 - 独立 Docker 程序包在新分支 `docker-standalone-20260521` 中存储。 - 主项目 `main` 分支仅提交工程分析记录,避免把独立运行包重复放进主项目。