Ceci est une ancienne révision du document !
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 :
- Faciliter un déploiement rapide et partout
- Faire en sorte que cela soit réutilisable et évolutif
- Disposer d'un environnement de dev
- Coder et versionner tout cela
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 :
- J'affecte un nouveau suous domaine au service web (ex: mumble pour mumble.mby.fr).
- 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).
- J'écris le fichier docker-compose.yml pour décrire et configurer le déploiement des conteneurs. J'y ajoute la config nginx-proxy.
- J'écris un script up.sh et down.sh pour démarrer et arrêter le service proprement (spécifique environnement, firewall, ...).
- Je test sur mon environnement de dev sur mon pc perso.
Mes choix
- Utiliser docker-compose pour sa simplicité et rapidité de mise en œuvre. Je n'ai qu'à configurer les images fournies par la communauté, et boum le tour est joué.
- Utiliser le firewall ufw pour protéger le serveur. Il set facile à prendre en main, même si son intégration avec docker ne coule pas de source.
- Utiliser le projet "nginx-proxy" pour servir de Reverse Proxy à tous les conteneurs de mon serveur.
- Utiliser Vagrant pour déployer rapidement mon serveur web docker sur mon environnement de dev (sur mon ordinateur perso).
- Versionner le tout avec git.