浏览文档目录 +

Docker 管理 · Free / Go

Compose

统一管理 Compose 项目的创建、编辑、部署和运行状态。

Compose真实界面,敏感信息已打码
真实产品界面 · 敏感信息已打码

可以做什么

  • 手动编辑或通过 Git 导入项目
  • 构建、启停、更新并查看部署日志
  • 使用配置历史和安全变更确认

这个页面解决什么问题

Compose 页面管理项目的完整生命周期:创建(手写或 Git 导入)、编辑、部署、启停、更新、迁移与销毁。它同时是其他功能的落点——AppStore 部署的项目、AI 生成的方案、应用保护的策略最终都在这里呈现为可管理的项目。

两条贯穿性的设计:一是项目目录名与 Docker Compose 身份分离——中文或大写的目录可以保留原名,而运行状态、日志和启停操作始终使用真实 Compose 项目名;二是生命周期操作走后台任务——提交后你可以离开页面,任务继续执行,完成后列表按真实 Docker 状态收敛刷新。

安全语义被严格区分:普通“更新”按项目原状态执行(运行中更新后仍运行,停止的项目只创建不启动);Go 的“安全更新”先创建应用保护备份再更新、失败自动回滚;“销毁”则按实时资源清单逐项确认后删除。三者不可混用。

开始前准备

  • 手动新建项目时名称必须匹配 [a-z0-9][a-z0-9_-]*,非法名称会被即时提示并禁止提交。
  • 项目存放路径固定为宿主机 PROJECT_ROOT 下的同名目录,页面会展示完整路径。
  • 安全更新与应用保护入口需要 Go;Git 导入需要可访问的仓库地址。

如何操作

手动新建或编辑项目

自己维护 Compose 配置,或修改已有项目的服务定义。

  1. 点击「新建项目」打开编辑弹窗;输入合法项目名后,页面展示宿主机存放路径。
  2. 在带行号、高亮与缩进辅助的编辑器中编写 Compose YAML;.env 区域默认收起,展开后可编辑环境变量并预览。
  3. 编辑已有项目时,若有实际配置变更,会先展示脱敏的变更预览再进入保存流程;没有变化则直接保存成功。
  4. 按需选择「保存」或「保存并部署」:后者默认启动容器;拉取镜像、无缓存重构选项不改变启动意图。
  5. YAML 解析或字段校验失败时,错误会精确到文件、字段与行号并保留全部诊断,修正后重试。

结果检查:项目文件写入项目根目录;部署任务后台执行,列表状态按真实 Docker 状态刷新。

从 Git 导入与同步

想直接使用仓库里现成的 Compose 配置,并跟随仓库更新。

  1. 点击「Git 导入」打开导入弹窗,填写仓库地址。
  2. 系统按“根目录 → 一级 docker/ → 一级 deploy/ → 其他一级目录 → 二级目录”的顺序发现标准 Compose 文件。
  3. 覆盖已存在项目或文件前会弹出确认,说明备份风险;确认后导入。
  4. 后续使用「同步」更新:优先复用上次发现的相对路径;项目含 build: 时源码、Dockerfile 与依赖文件会一并保留。
  5. 嵌套 Compose 文件按其所在目录为基准执行(env_file、相对 bind 均如此),保持原语义。

结果检查:项目按仓库配置创建;同步后可在更新流程中构建或拉取新镜像。

启停、重启与批量操作

日常运维:启动、停止、重启一批项目,或处理卡死的容器。

  1. 使用搜索、排序与状态筛选(全部/运行中/其它/已停止)定位项目;列表与卡片视图可切换。
  2. 行内操作提供启动/停止、重启与编辑;「强制停止」发送 SIGKILL,不做优雅停止,适合卡死场景。
  3. 批量勾选后统一启动/停止:受管项目走 Compose 任务接口,聚合的独立容器走容器接口,逐条隔离失败并汇总原因。
  4. 停止与重启完成后系统会复核实际容器状态,避免命令空转却显示成功。

结果检查:项目状态与操作结果一致;等待超时的任务转入后台跟踪,不会阻塞后续操作。

执行普通更新

镜像标签变化后,把项目更新到新版本。

  1. 在更新弹窗中选择是否拉取镜像、是否无缓存重构;最终执行由 Docker Compose 判断需要 pull、build 还是复用缓存。
  2. 确认后更新任务后台执行;运行中的项目更新后保持运行,已停止或尚未创建容器的项目只创建、不启动。
  3. 在项目详情查看每个容器按服务名关联的更新状态(成功、无需更新、拉取失败、更新受阻或应用失败)。
  4. 更新完成后容器恢复配置对应的正常名称;遗留临时名称会在旧容器移除后自动恢复。

结果检查:项目运行在新镜像上;最近更新结果持久保存,刷新或返回页面后仍可查看。

执行 Go 安全更新

担心更新失败导致服务长时间不可用,需要可回滚的更新。

  1. 从项目详情发起安全更新(Go):更新前自动创建应用保护备份。
  2. 更新过程核验新版本状态;出现失败时按备份回滚旧镜像和运行配置。
  3. 历史保留数量复用应用保护策略的配置。
  4. 更新结束后在详情与备份时间线核对结果;Client 重启时遗留的安全更新会转为需人工检查的失败状态,不会盲目续跑。

结果检查:更新成功则运行新版本;失败则自动回到更新前状态,影响被限制在更新窗口内。

使用配置历史比较与恢复

改坏配置后想回到几天前的版本,或对比两次变更差异。

  1. 打开项目的配置历史弹窗:每个项目保留最近 10 份加密 YAML 历史。
  2. 比较任意两份历史的差异;完整 YAML 只在后端解密,前端只接收脱敏摘要与结构化变化。
  3. 选择某份历史恢复:恢复前会先保存当前 YAML;恢复后不自动部署,也不修改 .env。
  4. 需要让恢复的配置生效时,再走正常的部署或更新流程。

结果检查:项目文件回到所选历史版本,当前配置已留档;.env 与部署状态保持不变。

把独立容器迁移为 Compose

有一个 docker run 起来的容器,想纳入 Compose 统一管理。

  1. 在独立容器的操作中选择「迁移为 Compose」,先预览镜像、挂载、端口、网络与环境变量的数量。
  2. 检查生成的配置:镜像固定到当前本地 image ID(不拉取)、挂载卷按 external 保留、不复制容器可写层。
  3. 确认后迁移在后台执行;运行中的服务会短暂中断。
  4. 成功后原容器保留为停止且禁用自动重启的状态;失败或中断会按持久记录恢复原名称、重启策略和运行状态。

结果检查:容器转为受管 Compose 项目;后续升级镜像可在 Compose 编辑中选择新镜像。

清除与销毁项目

项目彻底下线,需要连容器、卷和目录一起清理。

  1. 从更多菜单进入销毁流程;系统实时生成资源清单:项目容器、项目网络、项目专属数据卷、关联镜像、项目目录与记录。
  2. 逐项核对清单,默认全部勾选,可取消单项;项目外的 bind、外部卷与共享镜像自动保留并标注。
  3. 确认后按清单指纹与选择集复核执行,防止清单过期误删。
  4. 清单失效(资源状态已变化)时会拒绝执行并要求重新核对。

结果检查:所选资源被删除,保留项完整;操作记录可在系统事件中追溯。

弹窗与高级功能

编辑(新建/编辑项目)

打开入口:「新建项目」或行内「编辑」。

编写项目名、Compose YAML 与 .env。

  • 校验:项目名规则、YAML 解析与 Compose 字段校验,错误定位到文件、字段、行号。
  • 部署:保存与保存并部署分离;无实际变更时不生成重复配置历史。
  • 路径:只展示宿主机 PROJECT_ROOT/<项目名>,不使用容器内路径兜底。

提交或关闭后:保存写入项目文件;保存并部署在后台启动部署任务。

注意:高级模式外的编辑遵循与手写一致的校验;不要把密钥直接写入 YAML,优先使用 .env。

变更预览

打开入口:编辑已有项目且存在实际配置变更时自动出现。

在保存前核对镜像、端口、挂载、权限与环境变量的名称级变化。

  • 内容:脱敏的结构化差异列表,不展示敏感值。
  • 边界:注释、格式与 .env 注释也会写入文件,但不生成新的配置历史。

提交或关闭后:确认后进入历史保存与写入流程;取消则保留草稿。

Git 导入

打开入口:工具栏「Git 导入」。

从 Git 仓库发现并导入 Compose 配置。

  • 发现顺序:根目录 → docker/ → deploy/ → 其他一级目录 → 二级目录。
  • 覆盖确认:重复项目或文件覆盖前提示备份风险。
  • 基准:嵌套 Compose 的 build、env_file 与相对路径以文件所在目录为基准。

提交或关闭后:导入后项目可正常编辑与部署;同步复用上次发现的路径。

配置历史

打开入口:项目操作中的配置历史入口。

比较与恢复过去的配置版本。

  • 容量:最近 10 份加密 YAML;解密只发生在后端。
  • 恢复:恢复前保存当前 YAML;恢复后不自动部署、不改 .env。
  • 来源:手动编辑产生;AppStore、Git、AI 与新建项目不自动写入首期历史。

提交或关闭后:文件回到所选版本,当前配置已留档。

普通更新

打开入口:行内或详情的「更新」。

把项目更新到新镜像版本。

  • 选项:拉取镜像、无缓存重构独立控制;实际动作由 Docker Compose 判断。
  • 状态语义:运行中更新后运行;停止项目只创建不启动。
  • 反馈:按服务名关联每个容器的更新结果与原因。

提交或关闭后:更新任务后台执行;结果持久化并可在详情回看。

安全更新(Go)

打开入口:项目详情的「安全更新」。

带备份与自动回滚的更新。

  • 流程:先创建应用保护备份 → 更新并核验新版本 → 失败回滚旧镜像与运行配置。
  • 保留:历史保留数量复用应用保护策略。
  • 边界:安全更新不会自动恢复应用数据;数据恢复走应用保护中心。

提交或关闭后:成功运行新版本;失败自动回滚,遗留任务转为需人工检查的失败状态。

注意:Client 重启不会盲目续跑安全更新或回滚,需要人工确认现场。

迁移为 Compose

打开入口:独立容器操作中的「迁移为 Compose」。

把 docker run 容器转为受管项目。

  • 预览:镜像、挂载、端口、网络与环境变量数量。
  • 语义:镜像固定本地 image ID;挂载卷按 external 保留;仅限本机迁移。
  • 中断:运行服务短暂中断;成功后原容器保留为停止状态。

提交或关闭后:失败或中断按持久记录恢复原名称、重启策略与运行状态。

销毁确认

打开入口:更多菜单中的销毁操作。

按实时资源清单删除项目。

  • 清单:容器、网络、专属卷、关联镜像、项目目录与记录,逐项勾选。
  • 保留:项目外 bind、外部卷与共享镜像;保留任一容器时其依赖与记录一并保留。
  • 复核:按清单指纹与选择集执行,清单失效则拒绝。

提交或关闭后:删除所选资源并保留其余;删除不可逆,确认前逐项核对。

注意:销毁不清理 BACKUP_ROOT 中的备份;需要连备份一起清除时到应用保护执行永久删除。

AI 生成

打开入口:新建项目中的 AI 生成入口。

按自然语言描述生成 Compose 草稿。

  • 产物:生成的是模板草稿,需在编辑器中确认。
  • 边界:不绕过普通 Compose 校验、保存与部署确认;生成依赖已配置的模型连接。

提交或关闭后:草稿进入编辑流程,与手写项目同一套校验与部署语义。

注意事项

  • 备注(项目与容器)是按环境保存的管理元数据,不修改 Compose YAML;远程设备不提供本机备注编辑。
  • 后台任务在页面切换后继续执行;成功或失败都会触发真实项目列表的收敛刷新,不建立常驻轮询。
  • 部署边界:named volume 不会被改写为 bind;相对路径以项目目录为基准;普通 Compose 不继承 AI 专用适配层的自动修复语义。
  • 状态灯区分已创建、重启中、已暂停、检测中、部分运行与故障;“不健康”不是“已停止”。