Docker a beau nous faciliter la vie quand il s'git de déployer et d'entretenir des applications sur vos différentes plateformes, fournir un bon niveau d'optimisation et de gestion des ressources, il n'efface pas pour autant les défauts de conceptions de certains logiciel (en particulier les serveurs) qui peuvent se "perdre" dans la gestion de la mémoire, du CPU ou des ressources réseau jusqu'à planter ou ne plus fonctionner, surtout après plusieurs jours de fonctionnements.
Dans ce cas là, c'est bien connus des informaticiens un peu expérimentés, un bon "reboot" de la machine est souvent indispensable.
C'est exactement ce que le code suivant propose, ici présenté dans sa version docker-compose
services:
gluetun:
image: qmcgaw/gluetun:latest
container_name: Gluetun
....etc
mldonkey:
image: logicwar/mldonkey:latest
container_name: Mldonkey
....etc
restarter:
image: docker:cli
volumes: ["/var/run/docker.sock:/var/run/docker.sock"]
command: ["/bin/sh", "-c", "while true; do sleep 36000; docker restart Gluetun && docker restart Mldonkey;done"]
restart: unless-stopped
volumes:
gluetun:
On le voit ce compose crée un conteneur "restarter" qui se connecte au démon Docker de la machine hôte par son socket permettant ainsi d'exécuter des commandes bash sur cette dernière.
Ici la commande bash en question exécute un classique "while true do sleep "pendant 10 heures avant de relancer les deux applications "dockerisées" Gluetun et Mldonkey.
Cela fonctionne... et ouvre de nombreuses perspectives en terme d'automatisation de taches sur des systèmes un peu "fermés" et mal documentés, via docker et un peu de bash.
En espérant vous avoir été utile.
Comments