Un outil pour allumer et éteindre vos containers docker en fonction de leur utilisation.
Problématique
Pourquoi en container de + ? 😅
Avec mon serveur, j’ai beaucoup de containers docker qui tournent, certains sont des logiciels que je n’utilise qu’à certains moments et je n’ai pas besoin qu’ils restent allumés tout le temps, ils vont consommer de la ram, du cpu pour rien.
Je me suis donc posé cette question :
Existe-t-il un outil qui me permettrait d’Allumez mes containers docker seulement quand j’en ai besoin ?
Vous vous en doutez, j’ai fini par trouver un soft, ContainerNursery, il s’agit simplement d’un reverse proxy qui va analyser les requêtes faites à vos containers et si après un temps que l’on détermine dans la configuration il n’y a plus de requête, il éteint le container en question.
Astucieux non ?
Installation
Comment qu’on fait ? 😋
Docker
docker run \
--name='ContainerNursery' \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /mnt/ContainerNursery/config:/usr/src/app/config \
ghcr.io/itsecholot/containernursery:latest
Docker-Compose
version: "2.1"
services:
ContainerNursery:
image: ghcr.io/itsecholot/containernursery:latest
container_name: ContainerNursery
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /mnt/ContainerNursery/config:/usr/src/app/config
Configuration
Comment je le fais fonctionner ? 🙄
Pour la configuration, il vous suffit de créer un fichier config.yml à cet emplacement du container /usr/src/app/config/config.yml
proxyHosts:
- domain: handbrake.yourdomain.io
containerName: handbrake
proxyHost: localhost
proxyPort: 5800
timeoutSeconds: 600
stopOnTimeoutIfCpuUsageBelow: 50
- domain:
- wordpress.yourdomain.io
- wordpress.otherdomain.io
containerName:
- wordpress
- mariadb
proxyHost: wordpress
proxyPort: 3000
timeoutSeconds: 1800
Une petite explication des champs s’impose :
proxyHosts:
- domain: #La list des domaines qui sont utilisé pour le container Ex: domaine WAN et LAN
- sub.domaine.fr
- sub2.dapp.lan
containerName: #Une liste si vous voulez éteindre plusieurs containers, Ex: Un site web + le container pour la BDD
- NomDuContainer
- NomDuContainer2
proxyHost: 192.168.1.100 #Ip du container
proxyPort: 10148 #Port du container
timeoutSeconds: 300 #Le temps en secondes après lequel le container sera éteint si personne ne l'utilise
Et n’oubliez pas de modifier la redirection sur votre reverse proxy pour qu’il pointe vers ce container