Table des matières

Mon serveur web avec docker

Pour m'occuper pendant le confinement, je décide d'enfin avancer sur mes projets perso d’hébergement web de trucs qui servent plus ou moins. Je décide, selon ma philosophie, et mon envie de :

  1. Faciliter un déploiement rapide et partout
  2. Faire en sorte que cela soit réutilisable et évolutif
  3. Disposer d'un environnement de dev
  4. Coder et versionner tout cela

Démo

Visitez le site web mby.fr.

Le dépôt git

La forge git du projet.

Principes de bases

Des services web isolés

Je souhaite exposer sur le web des services isolés. Chaque service est isolé dans son conteneur. Avec la bonne configuration, docker-compose démarre "une grappe" de conteneur configurée pour discuter entre eux. Il inscrit également cette grappe auprès du service "nginx-proxy" ce qui rend la grappe de conteneur accessible via le protocole https sur le net (via letsencrypt). La plupart des éditeurs de logiciels fournissent leur solutions dans des images docker, ce qui rend l'intégration de nouveau service très rapide.

Procédure d'ajout d'un service web

Voici la procédure à dérouler pour fournir un nouveau "service web" prêt à déployer :

  1. J'affecte un nouveau suous domaine au service web (ex: mumble pour mumble.mby.fr).
  2. Je m'arrange pour l'embarquer dans un ou plusieurs conteneurs docker (Soit je prend les images fournient par la communauté, soit je créé mes propres images).
  3. J'écris le fichier docker-compose.yml pour décrire et configurer le déploiement des conteneurs. J'y ajoute la config nginx-proxy.
  4. J'écris un script up.sh et down.sh pour démarrer et arrêter le service proprement (spécifique environnement, firewall, ...).
  5. Je test sur mon environnement de dev sur mon pc perso.

Mes choix

docker-compose

ufw

Le projet nginx-proxy

Vagrant

Ressources