コンテンツにスキップ
サービス設定

サービス設定

各サービスはコントローラーリポジトリ直下のトップレベルディレクトリに存在します。サービスディレクトリには composia-meta.yaml と 1 つ以上の Docker Compose ファイルが含まれます。

最小限のサービス:

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

デフォルトの動作では、Composia は同じディレクトリ内の docker-compose.yaml を探します。

トップレベルキー

キー必須説明
namestringはい一意のサービス名。
project_namestringいいえDocker Compose プロジェクト名の上書き。デフォルトは正規化されたサービス名。
compose_files[]stringいいえサービスディレクトリからの相対 Compose ファイルパス。
enabledboolいいえサービスがアクティブかどうか。デフォルトは true
nodes[]stringはいターゲットノード ID。それぞれ controller.nodes に存在する必要があります。
infraobjectいいえこのサービスを Caddy、Rustic、または config-only インフラストラクチャとして宣言します。
networkobjectいいえCaddy と 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 インフラストラクチャとして宣言できるサービスは 1 つだけです。

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_dirstringエージェントの {StateDir}/data-protect にマッピングされるコンテナ内パス。
init_args[]stringrustic init に渡される追加引数。空のエントリは拒否されます。

Rustic インフラストラクチャとして宣言できるサービスは 1 つだけです。

infra.config

config-only インフラストラクチャサービスを宣言します。

infra:
  config: {}

Config-only サービスは infra.caddy または infra.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: Managed by Composia
キー必須説明
providerstringはいcloudflarealidnsdnspodroute53huaweicloud のいずれか。
hostnamestringはいDNS ホスト名。
record_typestringいいえ空、AAAAACNAME
valuestringいいえDNS レコード値。マルチノードサービスは明示的に設定することを推奨します。
proxiedboolいいえプロバイダー固有のプロキシトグル。現在は Cloudflare に関連します。
ttluint32いいえDNS TTL。
commentstringいいえDNS レコードコメント。

イメージ更新

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はい現在のバージョンソース。
discoveryobject または stringはい検出設定または名前付き検出ソース参照。
filterobject条件付き検出が digest でない限り必須。

current

以下のいずれか 1 つを指定します:

キー説明
tag静的な現在のタグ。
env.file + env.keyenv ファイルから現在のタグを読み取ります。file は相対パスでサービスディレクトリ内に留まる必要があります。
yaml.file + yaml.pathYAML ファイルから現在のタグを読み取ります。file は相対パスでサービスディレクトリ内に留まる必要があります。

discovery

キー説明
sources[]object少なくとも 1 つのソース。
combinestring空、mergefirst_success
include_prereleaseboolプレリリースバージョンを含めます。

検出ソースタイプ:

タイプ必須キー注意事項
autoなしrepo_url はオプションで、設定する場合は有効な URL である必要があります。唯一のソースである必要があります。
probeなしフィルターが存在する場合、semver フィルターが必要です。
registryなしレジストリタグ検出。
digestなし唯一のソースである必要があります。filter は省略する必要があります。
githubreporepoowner/repo 形式。
gitlabprojectGitLab プロジェクト ID またはパス。
forgejoreporepoowner/repo 形式。

filter

タイプ必須キー注意事項
semverなしallow には patchminormajor を含められます。
dateformatタグの解析に使用される日付フォーマット。
regexpattern, orderordernumeric または lexicographic である必要があります。
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いいえリストアアクション。

データアクション

キー必須説明
strategystringはいfiles.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いいえこのバックアップエントリを有効または無効にします。
schedulestringいいえcron スケジュール。

移行

migrate:
  data:
    - name: db
      enabled: true
キー必須説明
namestringはいバックアップとリストアの両方のアクションを持つ data_protect.data[].name を参照する必要があります。
enabledboolいいえこの項目の移行を有効または無効にします。
最終更新日 • Renovate Bot