- Intermédiaire
- Docker Compose
Comment ça marche
Avec la forme courte depends_on: [db], Compose attend seulement que le conteneur db démarre. Avec la forme longue et condition: service_healthy, il attend que le healthcheck de db réussisse. L'application doit quand même réessayer sa connexion, car une base peut aussi redémarrer plus tard.
Ce qui casse
Une API qui se connecte une seule fois au démarrage plante avec ECONNREFUSED quand elle arrive avant la base, et une politique de redémarrage ne fait que le masquer. L'ordre ne s'applique qu'à docker compose up, pas aux redémarrages du serveur ni à un service qui redémarre seul.
Dans compose.yaml
services:
api:
build: ./api
depends_on:
db:
condition: service_healthy
db:
image: postgres:16
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 2s
retries: 10
Regarde-le casser, puis répare-le
Écris le Dockerfile ou le fichier compose, tape les commandes docker, et regarde un serveur simulé les exécuter à travers redémarrages, mises à jour et trafic. Gratuit pour commencer.