跳至内容
为什么选择 Composia

为什么选择 Composia

Composia 是一个自托管的 Docker Compose 控制平面。将服务定义为纯文本文件,部署到一个或多个节点,并在整个基础设施中获得统一的可见性。

它不是一个 PaaS

与自托管 PaaS 平台不同,Composia 不会用自己的应用模型替换您的 Compose 文件。您的配置存放在标准的 docker-compose.yamlcomposia-meta.yaml 文件中,由您掌控。控制平面负责协调和上报,但您始终保留对每个节点的直接 CLI 和基于文件的访问权限。

关闭 Composia,您的 docker compose 命令仍然有效。所有操作都建立在标准的 Docker 和 Compose 原语之上。不存在平台绑定。

与其他工具对比

Dockge、Dockman

Dockge 和 Dockman 让管理单个 Compose 堆栈更加方便。它们侧重于单节点的便捷性,提供浏览器 UI。

Composia 同样采用文件优先的方式,但增加了多节点协调功能:将服务部署到任意已配置的节点,在一个仪表盘中统一查看所有服务和节点,并使用记录了每次操作和完整日志的任务系统。CLI 专为脚本编写和自动化而设计,而非偶尔使用。

Dokploy、Coolify

Dokploy 和 Coolify 是自托管 PaaS 平台。它们定义了自己的应用模型,管理构建流水线,并抽象了底层基础设施。一旦采用它们,您的部署流程就依赖于它们的抽象层。

Composia 则采取相反的方式。它直接使用您现有的 Compose 文件和目录结构。没有构建流水线,无需学习新的应用模型,在您和 Docker 之间没有任何抽象层。Composia 协调 Docker 的工作——它不会将 Docker 隐藏在平台抽象之后。

设计决策

基于文件的配置

Composia 使用 SQLite 存储运行时状态,使用 Git 存储期望状态配置。所有配置都保持基于文件的方式,没有 PostgreSQL、MySQL 或任何外部数据库依赖。

备份整个 Composia 安装只需备份您的 Git 仓库和 SQLite 数据库文件。在新机器上恢复这些文件即可重新上线。无需数据库迁移、连接池或单独的数据库服务器。

标准文件,无抽象层

一个服务就是一个包含 docker-compose.yamlcomposia-meta.yaml 的目录。目录结构由您自由组织。您可以添加 Compose 项目所需的任何文件:环境变量文件、配置模板、Caddyfile、自定义脚本等。

Composia 从 Git 仓库读取这些文件并构建服务包,由 agent 执行 docker compose 命令。没有任何转换、翻译或重写。您的 Compose 文件是唯一的数据源。

Git 原生

控制器将期望状态存储在 Git 仓库中。每次变更都是一次带作者和消息的提交。您可以获得版本历史、回滚能力以及同步到远程仓库的能力。使用您已经熟悉的任何 Git 工作流程。

CLI 与 API 优先

您在 Web UI 中能做的所有操作,都可以通过 composia CLI 完成。CLI 使用与 Web 前端相同的公共 API。脚本、CI 流水线和 AI 智能体通过同一个接口与 Composia 通信。

Web UI 是一个 SvelteKit 应用,调用的是同一个控制器 API。没有单独的管理 API 或内部专用端点。

您能获得什么

多节点部署。composia-meta.yaml 中定义服务应运行在哪些节点上。Composia 将服务部署到所有目标节点,并报告每个节点的状态。

Web 仪表盘。 浏览和编辑仓库文件、查看实时容器日志、检查 Docker 资源(容器、镜像、网络、卷),以及打开交互式终端进入运行中的容器。仪表盘支持移动端。

备份与恢复。 由 Rustic 驱动的自动备份,支持定时运行、快照管理和按需恢复。保护文件、目录、命名卷和 PostgreSQL 数据库。

DNS 管理。 自动为 Cloudflare、AliDNS、DNSPod、Route53 和华为云创建 DNS 记录。记录在部署时同步,在停止时移除。

反向代理。 Caddy 集成,同步每个服务的 Caddyfile 配置并自动触发重载。生成的配置文件存放在 agent 上,由 Caddy 基础设施服务导入。

镜像更新。 自动检测 Docker 注册表以及 GitHub、GitLab 或 Forgejo 发布的新镜像版本。支持语义化版本、日期、正则表达式和最新版本过滤。可以自动应用更新,也可在应用前进行审核。

通知。 邮件(SMTP)、Telegram 和 Alertmanager 通知,覆盖任务结果、备份事件、镜像更新和节点状态变化。可按事件类型和任务来源过滤。

加密密钥。 基于 age 加密的服务密钥文件。密钥以加密形式存储在仓库中,仅在控制器上解密。Agent 在服务包中接收解密后的内容,但无法访问私钥。

任务系统。 每个操作都是一个被追踪的任务,包含步骤级进度、完整日志输出和完成状态。可重新运行任务、检查任务步骤并实时查看日志。

Prometheus 指标。 控制器在其 HTTP 服务器上暴露 Prometheus 指标。

适用人群

Composia 为进阶用户和运维团队打造,适合以下人群:

  • 已经在使用 Docker Compose,并希望在不改变工作流程的情况下获得多节点协调能力。
  • 更倾向于在 Git 中管理纯文本配置,而不是通过 web 表单点击操作。
  • 需要自动化(备份、DNS、更新)但拒绝将 Compose 文件交给某个平台。
  • 需要一个可以编写脚本和集成的 CLI,而不仅仅是浏览器 UI。
  • 重视基于文件的配置、无平台绑定、低依赖的基础设施。
最后更新于 • Renovate Bot