Configuraciones de stacks¶
Traducción automática del original francés.
Ubicaciones¶
| Qué | Dónde |
|---|---|
| Archivo de configuración principal | /opt/docker/<stack>/docker-compose.yml en el host |
| Documentación de la stack | 10-stacks/<stack>/README.md en el vault |
| Registro de decisiones | 10-stacks/<stack>/decisions.md en el vault |
| Secretos cifrados | 00-infra/secrets/<hôte>/<stack>.enc.env en el vault |
10-stacks/<stack>/compose.yml es un enlace simbólico inactivo
En el vault, este archivo apunta a /opt/docker/<stack>/docker-compose.yml — una ruta que solo existe en el host. No se lee desde vm-claude.
Consecuencia útil: modificar el archivo mediante SSH es suficiente, ya que el vault ya está actualizado, ya que solo contiene un enlace. No hay nada que sincronizar.
La regla que distingue los dos casos:
Esqueleto de un servicio¶
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
- El nombre del servicio es el que Caddy utilizará como nombre de host:
reverse_proxy monservice:8080. - Nunca
latest. Una etiqueta de versión y su huella: la etiqueta indica lo que se quería, la huella indica lo que se obtuvo. on-failure:5en vm-docker y vm-compute-01,alwaysen otros lugares — ver Ciclo de vida.- Regla de dimensionamiento: tres veces el consumo observado en reposo.
infrastructure_networkpara todo lo que Caddy necesita acceder;authentik_backend_networkademás, si el servicio se comunica con Authentik.- Dockhand actualiza las imágenes mediante opt-out. Sin esta etiqueta, una imagen construida localmente sería reemplazada por un espacio vacío.
- Sin estas dos líneas, un contenedor "hablador" llenaría el disco del host.
Lo que un archivo de configuración Compose nunca debe contener¶
- Ningún dato en texto plano. Los valores residen en
.enven el host, cifrados en el cofre con SOPS + edad. Los nombres de las variables siguen siendo legibles: ungit diffindica qué secreto ha cambiado, pero nunca su valor. - Ningún
.envleído ni copiado al cofre. Esto se hace intencionadamente. - Ningún puerto expuesto que nadie necesite. Si Caddy está en la misma red, se conecta al contenedor por su nombre:
ports:solo proporciona una superficie adicional.
La forma del parque para una variable obligatoria, que falla de forma ruidosa en lugar de iniciarse parcialmente:
Principalmente up -d¶
config interpola las variables y valida el esquema. Si falta una variable, aparece inmediatamente, en lugar de generar un contenedor que se inicia pero no sirve para nada.
Dernière vérification de cette page : 2026-08-29