L’instruction HEALTHCHECK permet de dire à Docker comment faire pour savoir si l’application est UP ou non. Voici un exemple de HEALTHCHECK :
FROM busybox
HEALTHCHECK --interval=5s CMD ping -c 1 172.17.0.2 # ou l’ip ici est un autre conteneur
Ici on va faire un ping toutes les 5s sur un autre conteneur :
docker build -t monitoring .
docker container run -d --name monitor monitoring
docker inspect monitor
On peut voir la config du HEALTHCHECK dans l'inspect du conteneur :
Dans notre cas, si on éteint le conteneur avec l’adresse 172.17.0.2
Le conteneur monitor va donc devenir unhealthy car les pings ne réussiront plus.
Pour rappel, le ping renvoie un code 0 si réussi, code 1 si échec.
On peut spécifier certains paramètres avant l’instruction CMD dans le HEALTHCHECK :
HEALTHCHECK --interval=5m --timeout=3s \
CMD curl -f http://localhost/ || exit 1
On peut aussi exécuter un healthcheck via un docker conteneur run ! Il est possible qu’il n’y est pas de HEALTHCHECK de base :
docker container run -dt --name tmp --health-cmd “curl -f http://localhost/” busybox sh
On va maintenant modifier l’interval et le retry :
docker container run -dt --name tmp --health-cmd “curl -f http://localhost/” --health-interval=5s --health-retries=1 busybox sh