Il peut s’avérer utile pour certains services de reposer sur une image « up to date ». Pour cela, nous allons mettre en place le service Shepherd qui va automatiser ce processus de mise à jour.
Pour son fonctionnement, Shepherd utilise un certain nombre de variables d’environnement:
– SLEEP_TIME: par défaut, Shepherd recherche les mises à jour d’image toutes les 5 minutes. C’est un rythme un peu élevé à mon gout et je vais adopter une mise à jour toutes les heures en définissant la variable à « 60m »
– BLACKLIST_SERVICES: Shepherd ne fera pas la mise à jour des services définis dans cette variable d’environnement. Par exemple, la mise à jour de Plex en plein visionnage d’un film peut-être énervante. Pour l’instant, je vais black-lister le service « shepherd »
– IMAGE_AUTOCLEAN_LIMIT: Shepherd procèdera au nettoyage des anciennes images qui peuvent représenter une taille non négligeable. Je vais fixer la limite à « 5 »
– APPRISE_SIDECAR_URL: active un système de notifications lors de la mise à jour de services. Ce système de notification utilise le microservice « apprise ».
Nous allons maintenant ouvrir un terminal sur le manager de notre Docker Swarm et créer le service:
sudo docker service create --name shepherd \ --constraint "node.role==manager" \ --env SLEEP_TIME="60m" \ --env BLACKLIST_SERVICES="shepherd" \ --env WITH_REGISTRY_AUTH="true" \ --env WITH_INSECURE_REGISTRY="true" \ --env WITH_NO_RESOLVE_IMAGE="true" \ --env APPRISE_SIDECAR_URL="apprise-microservice:5000" \ --env IMAGE_AUTOCLEAN_LIMIT="5" \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock,ro \ mazzolino/shepherd