Le Conteneur Jetable
L'art de l'éphémère : comment détacher l'état et la configuration du cycle de vie du conteneur.
Compose · ArchitectureLe mythe du serveur précieux (Pet vs Troupeau)
Dans une infrastructure moderne, un conteneur ne doit jamais être réparé, il doit être remplacé. Si un serveur flanche, on détruit et on recrée. Mais pour qu'il soit véritablement "jetable" et puisse renaître à l'identique sans perte, on doit extraire de son code deux éléments vitaux :
La base de données, les images téléversées, tout ce qui a été créé par l'utilisateur. Si on détruit le conteneur, on ne veut pas détruire la mémoire.
Les mots de passe, les clés secrètes, les ports. Tout ce qui dicte comment le conteneur doit se comporter dans tel ou tel environnement.
Découpler pour mieux régner
On extrait la mémoire en utilisant des Volumes Docker.
- Le conteneur croit écrire sur son propre disque dur interne.
- En réalité, Docker redirige cette écriture vers un coffre-fort sécurisé sur la machine hôte.
- Quand le conteneur meurt, le coffre-fort reste intact pour le prochain.
On extrait la personnalité en utilisant des variables d'environnement.
- Le conteneur est une coquille vide, identique pour tout le monde (Dev, Prod).
- Au démarrage, Docker injecte les secrets depuis un petit fichier
.env. - On ne pousse jamais le
.envsur Git : le secret reste sur le serveur.
Les Variables Fantômes
L'art de l'injection : du fichier .env au cœur de l'application
Compose · Sécurité et ConfigurationLe danger du code en dur
- Écrire
MYSQL_ROOT_PASSWORD: 123456dans ledocker-compose.yml. - Pourquoi ? Le fichier est partagé sur Git (Github, GitLab).
- Toute personne ayant accès au dépôt a les clés du royaume.
- Stocker les secrets dans un fichier local
.env. - Interdire à Git de le lire (l'ajouter au
.gitignore). - Faire un lien entre ce fichier et Compose.
La chorégraphie des variables
Voici comment la donnée voyage, de façon invisible, jusqu'au conteneur :
Persistance et Volumes
Où vont les données quand le conteneur meurt ?
Compose · Données et StockageL'amnésie des conteneurs
Par nature, un conteneur est éphémère. Tout ce qu'il écrit sur son disque interne disparaît pour toujours au moment où il est détruit (docker compose down).
- Pour garder les articles de WordPress, il faut un ancrage dans le monde réel (la machine hôte).
- On appelle ça un "Mount" (montage). Il y en a deux grands types.
Bind Mounts vs Volumes Nommés
- Syntaxe :
./mon_dossier:/var/www/html - Le conteneur écrit dans un dossier précis de votre projet.
- Idéal pour modifier du code source et voir le résultat instantanément (Dev).
- Problème : Dépend de la structure de vos dossiers personnels.
- Syntaxe :
donnees_db:/var/lib/mysql - Docker gère le stockage quelque part sur le système (caché).
- Doit être déclaré dans un bloc
volumes:à la fin du Compose. - Idéal pour les bases de données. Plus sûr, plus rapide.