Zum Inhalt springen
Dienstkonfiguration

Dienstkonfiguration

Jeder Dienst befindet sich in einem Verzeichnis der obersten Ebene innerhalb des Controller-Repositories. Ein Dienstverzeichnis enthält composia-meta.yaml und eine oder mehrere Docker-Compose-Dateien.

Minimaler Dienst:

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

Mit dem Standardverhalten sucht Composia nach docker-compose.yaml im selben Verzeichnis.

Schlüssel der obersten Ebene

SchlüsselTypErforderlichBeschreibung
namestringJaEindeutiger Dienstname.
project_namestringNeinDocker-Compose-Projektname-Override. Standardmäßig ein normalisierter Dienstname.
compose_files[]stringNeinCompose-Dateipfade relativ zum Dienstverzeichnis.
enabledboolNeinOb der Dienst aktiv ist. Standardmäßig true.
nodes[]stringJaZiel-Node-IDs. Jede muss in controller.nodes existieren.
infraobjectNeinDeklariert diesen Dienst als Caddy-, Rustic- oder Config-Only-Infrastruktur.
networkobjectNeinCaddy- und DNS-Einstellungen.
updateobjectNeinImage-Update-Einstellungen.
data_protectobjectNeinBackup- und Restore-Datendefinitionen.
backupobjectNeinGeplante Backups für geschützte Daten.
migrateobjectNeinMigrationsfähige geschützte Daten.
auto_deployboolNeinDiesen Dienst nach Repository-Änderungen automatisch deployen.

compose_files-Einträge müssen relative Pfade sein, innerhalb des Dienstverzeichnisses bleiben und dürfen nicht dupliziert sein.

Infrastrukturdienste

infra.caddy

Deklariert den Caddy-Infrastrukturdienst des Repositories.

infra:
  caddy:
    compose_service: caddy
    config_dir: /etc/caddy
SchlüsselTypBeschreibung
compose_servicestringName des Compose-Dienstes. Standardmäßig caddy.
config_dirstringCaddy-Konfigurationsverzeichnis. Standardmäßig /etc/caddy.

Nur ein Dienst kann als Caddy-Infrastruktur deklariert werden.

infra.rustic

Deklariert den Rustic-Infrastrukturdienst des Repositories.

infra:
  rustic:
    compose_service: rustic
    profile: default
    data_protect_dir: /data-protect
    init_args:
      - --set-version
      - "2"
SchlüsselTypBeschreibung
compose_servicestringName des Compose-Dienstes. Standardmäßig rustic.
profilestringRustic-Profilname.
data_protect_dirstringContainer-Pfad, der auf {StateDir}/data-protect des Agenten gemappt wird.
init_args[]stringZusätzliche Argumente, die an rustic init übergeben werden. Leere Einträge werden abgelehnt.

Nur ein Dienst kann als Rustic-Infrastruktur deklariert werden.

infra.config

Deklariert einen reinen Konfigurations-Infrastrukturdienst.

infra:
  config: {}

Config-Only-Dienste können nicht mit infra.caddy oder infra.rustic kombiniert werden. Ihre data_protect-Aktionen können nur files.copy verwenden.

Netzwerk

network.caddy

network:
  caddy:
    enabled: true
    source: Caddyfile
SchlüsselTypErforderlichBeschreibung
enabledboolNeinAktiviert die Caddy-Verwaltung. Standardmäßig false.
sourcestringBed.Caddyfile-Pfad relativ zum Dienstverzeichnis. Erforderlich, wenn aktiviert.

network.dns

network:
  dns:
    provider: cloudflare
    hostname: app.example.com
    record_type: A
    value: 203.0.113.10
    proxied: true
    ttl: 120
    comment: Verwaltet von Composia
SchlüsselTypErforderlichBeschreibung
providerstringJacloudflare, alidns, dnspod, route53 oder huaweicloud.
hostnamestringJaDNS-Hostname.
record_typestringNeinLeer, A, AAAA oder CNAME.
valuestringNeinDNS-Record-Wert. Multi-Node-Dienste sollten diesen explizit setzen.
proxiedboolNeinProvider-spezifischer Proxy-Umschalter, derzeit relevant für Cloudflare.
ttluint32NeinDNS-TTL.
commentstringNeinDNS-Record-Kommentar.

Image-Updates

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

SchlüsselTypBeschreibung
enabledboolAktiviert Update-Prüfungen für diesen Dienst.
auto_applyboolWendet erkannte Updates automatisch an.
check_schedulestringCron-Zeitplan für Update-Prüfungen.
backup_before_updateboolFührt Backups vor dem Anwenden von Updates aus.
backup_data[]objectGeschützte Datenelemente, die vor dem Update gesichert werden sollen.
digest_pinboolFixiert Images per Digest.
discovery_sourcesmap[string]objectWiederverwendbare Erkennungsquellen. Benannte Quellen können nicht auf eine andere Quelle verweisen.
imagesmap[string]objectUpdate-Definitionen pro Image.

update.backup_data[]

SchlüsselTypBeschreibung
namestringName des geschützten Datenelements.
enabledboolDieses Element ein- oder ausschließen.

update.images.<name>

SchlüsselTypErforderlichBeschreibung
imagestringJaImage-Repository.
auto_applyboolNeinPer-Image-Override für automatisches Anwenden.
check_schedulestringNeinPer-Image-Prüfzeitplan.
backup_before_updateboolNeinPer-Image-Backup-Umschalter.
digest_pinboolNeinPer-Image-Digest-Pin-Umschalter.
currentobjectJaAktuelle Versionsquelle.
discoveryobject oder stringJaErkennungskonfiguration oder benannte Erkennungsquellenreferenz.
filterobjectBed.Erforderlich, es sei denn, die Erkennung ist digest.

current

Gib genau eines davon an:

SchlüsselBeschreibung
tagStatischer aktueller Tag.
env.file + env.keyLiest den aktuellen Tag aus einer Env-Datei. file muss relativ sein und innerhalb des Dienstverzeichnisses bleiben.
yaml.file + yaml.pathLiest den aktuellen Tag aus einer YAML-Datei. file muss relativ sein und innerhalb des Dienstverzeichnisses bleiben.

discovery

SchlüsselTypBeschreibung
sources[]objectMindestens eine Quelle.
combinestringLeer, merge oder first_success.
include_prereleaseboolVorabversionen einschließen.

Erkennungsquellentypen:

TypErforderliche SchlüsselHinweise
autoKeinerepo_url ist optional und muss, wenn gesetzt, eine gültige URL sein. Muss die einzige Quelle sein.
probeKeineErfordert semver-Filter, wenn ein Filter vorhanden ist.
registryKeineRegistry-Tag-Erkennung.
digestKeineMuss die einzige Quelle sein. filter muss weggelassen werden.
githubreporepo ist owner/repo.
gitlabprojectGitLab-Projekt-ID oder -Pfad.
forgejoreporepo ist owner/repo.

filter

TypErforderliche SchlüsselHinweise
semverKeineallow kann patch, minor, major enthalten.
dateformatDatumsformat zum Parsen von Tags.
regexpattern, orderorder muss numeric oder lexicographic sein.
latestKeineVerwendet den neuesten Kandidaten.

Datenschutz

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[]

SchlüsselTypErforderlichBeschreibung
namestringJaEindeutiger Name des Datenelements.
backupobjectNeinBackup-Aktion.
restoreobjectNeinRestore-Aktion.

Datenaktion

SchlüsselTypErforderlichBeschreibung
strategystringJafiles.copy, files.copy_after_stop, database.pgdumpall oder database.pgimport.
servicestringBed.Erforderlich für database.*-Strategien. Name des Compose-Dienstes.
include[]stringBed.Erforderlich für files.*-Strategien. ./... oder Pfade mit / sind Dienstpfade; reine Namen sind Docker-Volume-Namen.

Backups

backup:
  data:
    - name: db
      provider: rustic
      enabled: true
      schedule: "0 2 * * *"
SchlüsselTypErforderlichBeschreibung
namestringJaMuss auf einen data_protect.data[].name mit einer Backup-Aktion verweisen.
providerstringNeinName des Backup-Providers.
enabledboolNeinAktiviert oder deaktiviert diesen Backup-Eintrag.
schedulestringNeinCron-Zeitplan.

Migration

migrate:
  data:
    - name: db
      enabled: true
SchlüsselTypErforderlichBeschreibung
namestringJaMuss auf einen data_protect.data[].name mit sowohl Backup- als auch Restore-Aktionen verweisen.
enabledboolNeinAktiviert oder deaktiviert die Migration für dieses Element.
Zuletzt aktualisiert am • Renovate Bot