Capsule Avancée

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 · Architecture
Conteneur Jetable - Le Concept

Le 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 :

1. Sa Mémoire (L'état)

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.

2. Sa Personnalité (La config)

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.

Conteneur Jetable - L'Architecture

Découpler pour mieux régner

Les Volumes (Persistance)

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.
Le fichier .env (Variables)

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 .env sur Git : le secret reste sur le serveur.
Capsule Avancée

Les Variables Fantômes

L'art de l'injection : du fichier .env au cœur de l'application

Compose · Sécurité et Configuration
Conteneur Jetable - Variables

Le danger du code en dur

À ne jamais faire
  • Écrire MYSQL_ROOT_PASSWORD: 123456 dans le docker-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.
La solution
  • 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.
Conteneur Jetable - Variables

La chorégraphie des variables

Voici comment la donnée voyage, de façon invisible, jusqu'au conteneur :

# 1. Dans le fichier .env (resté sur le serveur)
MOT_DE_PASSE_BD=SecretAbsolu42

# 2. Dans le docker-compose.yml (le passeur)
services:
basededonnees:
environment:
MYSQL_ROOT_PASSWORD: ${MOT_DE_PASSE_BD}

# 3. À l'intérieur du conteneur en cours d'exécution
Le processus MySQL reçoit : MYSQL_ROOT_PASSWORD=SecretAbsolu42
Capsule Avancée

Persistance et Volumes

Où vont les données quand le conteneur meurt ?

Compose · Données et Stockage
Conteneur Jetable - Volumes

L'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).

Conteneur Jetable - Volumes

Bind Mounts vs Volumes Nommés

Bind Mount (Le dossier visible)
  • 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.
Volume Nommé (La boîte noire)
  • 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.