Comme promis, je vous détaille l’architecture que j’ai utilisé pour fournir des containers dans un contexte de TP PHP/MySQL pour des étudiants :
- Chaque groupe de travail/étudiant a son container LAMP.
- En frontend, un reverse proxy Nginx centralise les connexions HTTP(s).
- En backend, un serveur de base de données MariaDB offre une base par groupe/étudiant.
Les Dockerfiles
DB :
Je lance juste un container MariaDB et je crée ensuite les BDD à la main via docker exec :
Nginx :
LAMP :
Mon image LAMP dont les étudiants se servent contient un serveur Apache, PHP5 et Adminer comme logiciel d’administration de base de données. J’installe aussi un serveur SSH pour fournir un terminal et un SFTP pour l’utilisateur www-data.
Docker-compose en chef d’orchestre
L’ensemble est géré par Docker Compose avec ce fichier docker-compose.yml.
Le plus important à comprendre :
- Tous les containers se lient à db
- Nginx se lie à tous les containers
- Toutes les données importantes (à sauvegarder) sont montées en volume sur l’hôte.
C’est tout, maintenant à vous de jouer.