Conventions Docker¶
1. IP centralisées (network.env)¶
- Format
IP_<SERVICE> = 172.16.0.x. Les composes référencent${IP_<SERVICE>}. compose.yamlinjectenetwork.envpuis le.envdu stack viaenv_file:→ résolution des IP depuis la racine/srv/docker.
2. Fichiers .env¶
/srv/docker/.env= master (superset des secrets :TZ,PASSWORD, clés API…).compose/<stack>/.env= épuré (uniquement les variables utilisées par le stack).maila en plusmailu.env;immicha son propre.env.- Aucun secret dans le wiki : seulement des pointeurs (voir Sécurité).
3. Modèle de service (gabarit)¶
Les services suivent ce patron (cf. n'importe quelle page de stack) :
services:
monservice:
image: "...:tag" # ou build: { context: /srv/docker/build/<image> }
container_name: monservice
hostname: monservice
restart: unless-stopped
user: "1000:996" # jonathan:docker (fichiers volumes = jonathan)
networks:
dockernet:
ipv4_address: ${IP_MONSERVICE}
environment:
- TZ
volumes:
- /etc/localtime:/etc/localtime:ro
- /srv/docker/volumes/monservice/...:/...
healthcheck:
test: ["CMD-SHELL", "wget -q -O /dev/null http://localhost:<port>/ || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
networks:
dockernet: { external: true, name: dockernet }
4. Dépendances inter-stacks¶
depends_onne fonctionne qu'au sein d'un même stack. Les dépendances inter-stacks (HA→bases, mailu→redis, frigate→emqx…) ont été retirées : pas d'ordre de démarrage global.- La convergence repose sur les politiques
restart:(reconnexion auto) et lesdepends_onintra-stack.docker compose up -ddémarre tout.
5. Données & caches¶
- Données persistées :
/srv/docker/volumes/<service>/→ sauvegardées (rsync + dumps). - Données régénérables (caches build/ML) :
/srv/docker/cache/<app>/→ exclues des backups.
6. Ajouter un service¶
Procédure complète (IP, .env, NPM, Authelia, monitoring) : voir
Runbook → Ajouter un conteneur.