Healthcheck et dépendances avec Docker

Healthcheck

Healthcheck

Que ce soit dans un Dockerfile ou dans un docker-compose.yml, on peut utiliser healthcheck pour tester la bonne santé d’un service.

Un healthcheck consiste à passer régulièrement une commande, par exemple un curl qui est censé renvoyer un résultat.

Exemple de healthcheck avec Curl dans un docker-compose.yml :

service:
  web:
    ...
    healthcheck:
      test: curl -f http://localhost
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 30s

Exemple de healthcheck avec Curl dans un Dockerfile :

HEALTHCHECK --interval=30s --timeout=5s --retries=3 --start_period=30s CMD curl -f http://localhost/

Vérifier la santé d’un service

Un simple docker ps ou docker-compose ps vous indique déjà l’état de votre service :

blog       nginx -g daemon off;             Up (healthy)      80/tcp

Vous pouvez aussi interroger l’état d’un conteneur avec docker inspect …

docker inspect --format='{{json .State.Health}}' mon-service

… qui est censé vous renvoyer un statut “healthy” :

{"Status":"healthy", ...

Dépendances

Dans votre infrastructure Docker, vous pouvez définir des dépendances entre services, typiquement, l’appli Web ne peut pas démarrer sans base de données :

version: "3.7"
services:

  web:
    build: .
    depends_on:
      - db

  db:
    image: postgres

https://howchoo.com/g/zwjhogrkywe/how-to-add-a-health-check-to-your-docker-container