healthcheck
Une commande que Docker exécute dans le conteneur à intervalle régulier, et dont le code de sortie fixe son état : starting, healthy ou unhealthy. Dans Compose : test: ['CMD-SHELL', 'pg_isready -U app'], avec interval: 5s, timeout: 3s, retries: 10. Sans lui, la seule chose que Compose sache dire est que le conteneur a démarré — et depends_on: [db] n'attend que cela. PostgreSQL met encore quelques secondes à accepter des connexions : l'application démarre dans cette fenêtre, échoue, et restart: unless-stopped la relance en boucle jusqu'à ce qu'une tentative passe. Les journaux montrent alors des erreurs de connexion qui semblent intermittentes et ne le sont pas. condition: service_healthy sous depends_on est ce qui sépare « démarré » de « accepte des connexions », à condition que le test interroge le service. Un sleep 10 ou un test de port passent pendant que la base refuse les requêtes : docker compose ps affiche healthy, et rien ne l'est.
Aussi écrit : health check, HEALTHCHECK, point de santé
