Déploiement d’une infrastructure web résiliente avec DOCKER
Publié par mzoughih le
Contexte
Infrastructure nécessaire
Afin d’avoir un espace de travail à la fois agréable et complet, nous avons besoin de nombreuses applications Web allant du site web sur lequel nous nous trouvons jusqu’au exécuteurs de tâche automatisées (Runners) Gitlab.
Aujourd’hui, une vingtaine de conteneurs ayant chacun une tâche bien différente sont installés :
- Portainer pour la gestion graphique de l’infrastructure
- Gitlab ainsi que ses exécuteurs pour stocker, tester et déployer les différents projets
- Le site Internet ainsi que sa base de données
- NextCloud pour le système de partage de fichier centralisé
- Mattermost comme logiciel de messagerie instantanée interne Poste.io en tant que services de mails tout en un avec antivirus et antispam
- Mattermost comme logiciel de messagerie instantanée interne Poste.io en tant que services de mails tout en un avec antivirus et antispam
- Un proxy Nginx pour faciliter les accès aux différents services disponibles
- Un service de génération de certificats SSL automatique avec Let’s Encrypt
- Et bien d'autres encore...
RÉALISATION
Afin de créer cette architecture, nous avons mis en place une infrastructure de documents (docker-compose) en fonction de chaque service afin de les séparer correctement en cas de mise à jour ou de problème de configuration. Un gros avantage d’un fichier par service est la possibilité de mettre à jour plus rapidement ou de de redéployer les services sur un autre serveur de la manière la plus simple et efficace possible.
Un exemple de fichier docker-compose utilisé serait celui de notre Gitlab :

Ce fichier totalement autonome permet d’être copié vers un autre serveur et d’être redéployé très rapidement. Il permet également grâce à l’outil Docker de redémarrer automatiquement en cas d’erreur ou de redémarrage de la machine. Pour en savoir plus, n’hésitez pas à aller lire nos articles sur le sujet.
Les différents volumes intégrés directement au serveur permettent d’avoir un accès rapide et durable aux données et aux fichiers de configuration de l’application. Cela va également permettre au système d’effectuer des sauvegardes sur ces fichiers obligatoires au démarrage de Gitlab
SAUVERGARDES
- Sur un autre serveur avec un prestataire différent pour limiter le risque de pannes ;
- Sur un périphérique de type Network Access Storage (NAS) hébergé en interne dans l’entreprise ;