Configuratie van stacks¶
Machinevertaling van het Franse origineel.
Locaties¶
| Wat | Waar |
|---|---|
| Canonisch Compose-bestand | /opt/docker/<stack>/docker-compose.yml op de host |
| Documentatie van de stack | 10-stacks/<stack>/README.md in de vault |
| Beslissingslogboek | 10-stacks/<stack>/decisions.md in de vault |
| Versleutelde geheimen | 00-infra/secrets/<hôte>/<stack>.enc.env in de vault |
10-stacks/<stack>/compose.yml is een symbolische link die niet meer bestaat
In de vault verwijst dit bestand naar /opt/docker/<stack>/docker-compose.yml — een pad dat alleen op de host bestaat. Het wordt niet gelezen vanaf vm-claude.
Handige consequentie: het bewerken van het bestand via SSH is voldoende, de vault is al up-to-date omdat het alleen een link bevat. Er is niets om te synchroniseren.
De controle die de twee gevallen onderscheidt:
Skelet van een service¶
services:
monservice: # (1)!
image: monimage:1.4.2@sha256:... # (2)!
container_name: monservice
restart: on-failure:5 # (3)!
cpus: 0.5
mem_limit: 256m # (4)!
security_opt:
- no-new-privileges:true
networks:
- infrastructure_network # (5)!
labels:
- dockhand.update=false # (6)!
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:8080/healthz"]
interval: 30s
timeout: 5s
retries: 3
logging:
driver: json-file
options:
max-size: 50m
max-file: "3" # (7)!
networks:
infrastructure_network:
external: true
- De naam van de service is de naam die Caddy gebruikt als hostnaam:
reverse_proxy monservice:8080. - Nooit
latest. Een versie-tag en zijn hash: de tag geeft aan wat we wilden, de hash geeft aan wat we daadwerkelijk hebben. on-failure:5op vm-docker en vm-compute-01,alwayselders — zie Levenscyclus.- Regel voor schaal: drie keer het gemiddelde verbruik in rust.
infrastructure_networkvoor alles wat Caddy moet aanspreken;authentik_backend_network, bovendien als de service communiceert met Authentik.- Dockhand update de images via opt-out. Zonder deze label zou een lokaal gebouwde image worden vervangen door een lege image.
- Zonder deze twee regels, vult een communicatieve container de schijf van de host.
Wat een Compose-bestand nooit mag bevatten¶
- Geen expliciete informatie. De waarden leven in
.envop de host, versleuteld in de vault met SOPS + leeftijd. De namen van de variabelen blijven leesbaar: eengit difftoont welke geheime waarde is veranderd, maar niet de waarde zelf. - Geen
.envdie worden gelezen of gekopieerd naar de vault. Dit is opzettelijk. - Geen open poort die niemand nodig heeft. Als Caddy op hetzelfde netwerk staat, verbindt het zich met de container via zijn naam:
ports:voegt alleen maar een extra interface toe.
De structuur voor een verplicht veld, die op een onhandige manier faalt in plaats van te starten:
Voordat alles up -d¶
config vult de variabelen in en valideert het schema. Een ontbrekende variabele verschijnt direct, in plaats van een container te creëren die start en nutteloos is.
Dernière vérification de cette page : 2026-08-29