Docker ou le déploiement facile

C'est révolutionnaire et surtout super pratique.
Le côté pratique et reproductible des App Store Android et iOS palliant la complexité du déploiement de services nécessitant plusieurs briques logicielles et des configuration système spécifiques.

Migrer son infrastructure sur docker

L'un des intêrets de Docker est la conteneurisation : vos logiciels sont séparés les uns des autres, et la désinstallation de l'un n'affecte pas l'autre. Cependant, il est courant de créer des services multi-conteneurs : un logiciel par conteneur (serveur web, base de donnée...).

Si vous utilisiez précédemment une multitude de serveurs web derrière un proxy, vous pouvez répéter cette configuration mais ça ne sera pas pratique : il faut modifier la configuration à chaque fois qu'on rajoute un conteneur...

C'est là qu'entre en jeu la puissance de docker : l'image jwilder/nginx-proxy est capable de détecter des conteneur et de les configurer derrière son proxy

Un proxy HTTPS automatique

Exemple: vous disposez d'un nom de domaine example.com qui pointe vers un seul serveur. Vous avez plusieurs services web, blog, owncloud à faire tourner sur le port 80 et 443 (HTTP/HTTPS) mais vous n'avez qu'une seule IP. Il suffit de ne pas publier (mapper le port du serveur sur le port d'UN container docker) les ports de ces services et d'utiliser le nginx-proxy automatique.
Pour cela, il faut que web.example.com,blog.example.com ... pointent aussi vers l'IP de votre serveur (par exemple avec des redirections DNS CNAME)
Après, il faut définir pour chaque container la variable d'environnement VIRTUAL_HOST au nom de domaine entier (FQDN).
Là, nginx-proxy (il faut que ses ports 80 et 443 soient publiés sur l'interface réseau du serveur avec docker run -p 80:80 -p 443:443 .... ) va rediriger les requêtes vers les bons containers.

Encore mieux : nginx-proxy* redirigera vers le premier port qu'il trouvera dans la directive EXPOSE du container, en prenant par défaut le port 80. Ça veut dire que vous pouvez lancer des conteneurs sans vous soucier s'ils utilisent le port 80 ou 2368 ou 65534, ils seront servis correctement par votre proxy !

Une interface graphique

Il existe des logiciels de bureau et des interfaces web pour gérer Docker. J'utilise Portainer, qui est très bien pour une infrastructure 1 conteneur par 1 service. On peut le déployer dans un conteneur, c'est super facile, et il est même capable de se connecter à un autre host Docker !

Il existe Rancher, qui est fait pour gérer des cluster, avec beaucoup de fonctionnalités avancées, mais c'est un peu complexe à déployer.


Voir aussi: A comparison of Docker GUIs