跳至内容
服务配置

服务配置

每个服务位于控制器仓库的一个顶级目录中。服务目录包含 composia-meta.yaml 和一个或多个 Docker Compose 文件。

最小服务:

composia-meta.yaml
name: my-app
nodes:
  - main

在默认行为下,Composia 会在同一目录中查找 docker-compose.yaml

顶级键

类型必填描述
namestring唯一的服务名称。
project_namestringDocker Compose 项目名称覆盖。默认为规范化后的服务名称。
compose_files[]string相对于服务目录的 Compose 文件路径。
enabledbool服务是否激活。默认为 true
nodes[]string目标节点 ID 列表。每个都必须存在于 controller.nodes 中。
infraobject声明此服务为 Caddy、Rustic 或仅配置型基础设施。
networkobjectCaddy 和 DNS 设置。
updateobject镜像更新设置。
data_protectobject备份和恢复数据定义。
backupobject受保护数据的定时备份。
migrateobject启用迁移的受保护数据。
auto_deploybool仓库更改后自动部署此服务。

compose_files 条目必须是相对路径,必须保持在服务目录内,且不能重复。

基础设施服务

infra.caddy

声明仓库的 Caddy 基础设施服务。

infra:
  caddy:
    compose_service: caddy
    config_dir: /etc/caddy
类型描述
compose_servicestringCompose 服务名称。默认为 caddy
config_dirstringCaddy 配置目录。默认为 /etc/caddy

只能有一个服务被声明为 Caddy 基础设施。

infra.rustic

声明仓库的 Rustic 基础设施服务。

infra:
  rustic:
    compose_service: rustic
    profile: default
    data_protect_dir: /data-protect
    init_args:
      - --set-version
      - "2"
类型描述
compose_servicestringCompose 服务名称。默认为 rustic
profilestringRustic 配置文件名称。
data_protect_dirstringRustic 容器内映射 agent {StateDir}/data-protect 的路径。
init_args[]string传递给 rustic init 的额外参数。空条目会被拒绝。

只能有一个服务被声明为 Rustic 基础设施。

infra.config

声明一个仅配置型基础设施服务。

infra:
  config: {}

仅配置型服务不能与 infra.caddyinfra.rustic 组合。其 data_protect 操作只能使用 files.copy

网络

network.caddy

network:
  caddy:
    enabled: true
    source: Caddyfile
类型必填描述
enabledbool启用 Caddy 管理。默认为 false
sourcestring条件相对于服务目录的 Caddyfile 路径。启用时必填。

network.dns

network:
  dns:
    provider: cloudflare
    hostname: app.example.com
    record_type: A
    value: 203.0.113.10
    proxied: true
    ttl: 120
    comment: 由 Composia 管理
类型必填描述
providerstringcloudflarealidnsdnspodroute53huaweicloud
hostnamestringDNS 主机名。
record_typestring空、AAAAACNAME
valuestringDNS 记录值。多节点服务应显式设置此项。
proxiedbool提供商特定的代理开关,目前与 Cloudflare 相关。
ttluint32DNS TTL。
commentstringDNS 记录备注。

镜像更新

update:
  enabled: true
  auto_apply: false
  check_schedule: "0 */6 * * *"
  backup_before_update: true
  digest_pin: false
  backup_data:
    - name: db
      enabled: true
  discovery_sources:
    upstream:
      sources:
        - type: github
          repo: owner/repo
      combine: first_success
      include_prerelease: false
  images:
    app:
      image: ghcr.io/example/app
      current:
        env:
          file: .env
          key: APP_VERSION
      discovery: upstream
      filter:
        type: semver
        allow:
          - patch
          - minor

update

类型描述
enabledbool为此服务启用更新检查。
auto_applybool自动应用检测到的更新。
check_schedulestring更新检查的 cron 计划。
backup_before_updatebool在应用更新之前运行备份。
backup_data[]object更新前要备份的受保护数据项。
digest_pinbool通过摘要锁定镜像。
discovery_sourcesmap[string]object可复用的发现源。命名源不能引用另一个源。
imagesmap[string]object每镜像更新定义。

update.backup_data[]

类型描述
namestring受保护的数据项名称。
enabledbool包含或排除此项。

update.images.<name>

类型必填描述
imagestring镜像仓库。
auto_applybool每镜像自动应用覆盖。
check_schedulestring每镜像检查计划。
backup_before_updatebool每镜像备份开关。
digest_pinbool每镜像摘要锁定开关。
currentobject当前版本来源。
discoveryobjectstring发现配置或命名发现源引用。
filterobject条件必填,除非发现模式为 digest

current

指定以下之一:

描述
tag静态当前标签。
env.file + env.key从环境变量文件读取当前标签。file 必须是相对路径且保持在服务目录内。
yaml.file + yaml.path从 YAML 文件读取当前标签。file 必须是相对路径且保持在服务目录内。

discovery

类型描述
sources[]object至少一个源。
combinestring空、mergefirst_success
include_prereleasebool包含预发布版本。

发现源类型:

类型必填键备注
autorepo_url 可选,设置时必须为有效 URL。必须是唯一源。
probe当存在过滤器时需要 semver 过滤器。
registry注册表标签发现。
digest必须是唯一源。必须省略 filter
githubreporepo 格式为 owner/repo
gitlabprojectGitLab 项目 ID 或路径。
forgejoreporepo 格式为 owner/repo

filter

类型必填键备注
semverallow 可包含 patchminormajor
dateformat用于解析标签的日期格式。
regexpatternorderorder 必须为 numericlexicographic
latest使用最新候选版本。

数据保护

data_protect:
  data:
    - name: db
      backup:
        strategy: database.pgdumpall
        service: postgres
      restore:
        strategy: database.pgimport
        service: postgres
    - name: uploads
      backup:
        strategy: files.copy_after_stop
        include:
          - ./uploads
      restore:
        strategy: files.copy
        include:
          - ./uploads

data_protect.data[]

类型必填描述
namestring唯一的数据项名称。
backupobject备份操作。
restoreobject恢复操作。

数据操作

类型必填描述
strategystringfiles.copyfiles.copy_after_stopdatabase.pgdumpalldatabase.pgimport
servicestring条件database.* 策略必填。Compose 服务名称。
include[]string条件files.* 策略必填。使用 ./... 或包含 / 的路径表示服务路径;裸名表示 Docker 卷名。

备份

backup:
  data:
    - name: db
      provider: rustic
      enabled: true
      schedule: "0 2 * * *"
类型必填描述
namestring必须引用具有备份操作的 data_protect.data[].name
providerstring备份提供者名称。
enabledbool启用或禁用此备份条目。
schedulestringCron 计划。

迁移

migrate:
  data:
    - name: db
      enabled: true
类型必填描述
namestring必须引用同时具有备份和恢复操作的 data_protect.data[].name
enabledbool启用或禁用此项的迁移。
最后更新于 • Renovate Bot