Prouver et automatiser
Prouver la persistance puis encapsuler les commandes comprises.
Dans ce chapitre : 6 étapes et 26 preuves de validation.
Étape 91 — Prouver que WordPress partage bien son volume
Section intitulée « Étape 91 — Prouver que WordPress partage bien son volume »Objectif. Tu verras que NGINX et PHP-FPM lisent les mêmes fichiers persistants.
État du projet avant cette étape. La stack complète tourne. Le site n’a pourtant de sens que si NGINX et WordPress voient le même /var/www/html.
Comprendre le changement
Section intitulée « Comprendre le changement »Un volume nommé peut être monté dans plusieurs containers. WordPress écrit les fichiers ; NGINX les lit pour servir les ressources et transmettre les scripts PHP.
Faire une seule chose
Section intitulée « Faire une seule chose »Crée un petit fichier témoin depuis WordPress puis lis-le depuis NGINX. Supprime ensuite ce témoin.
docker compose -f srcs/docker-compose.yml exec wordpress sh -c 'echo volume-ok > /var/www/html/volume-test.txt'
docker compose -f srcs/docker-compose.yml exec nginx cat /var/www/html/volume-test.txt
docker compose -f srcs/docker-compose.yml exec wordpress rm /var/www/html/volume-test.txtCe que fait chaque partie
- La première commande écrit dans le volume depuis WordPress.
- La deuxième lit le même chemin depuis NGINX.
- La dernière nettoie le fichier de test.
La commande cat affiche exactement volume-ok.
Si cela échoue
Si le fichier est absent dans NGINX, compare le nom du volume et le chemin de montage des deux services.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Pourquoi créer le Makefile à la fin ?
Il automatise un processus Compose déjà construit, testé et compris.
Étape 92 — Supprimer les containers sans perdre le site
Section intitulée « Étape 92 — Supprimer les containers sans perdre le site »Objectif. Tu prouveras la persistance au lieu de la supposer.
État du projet avant cette étape. Les deux volumes sont utilisés. Il reste à montrer que leur durée de vie dépasse celle des containers.
Comprendre le changement
Section intitulée « Comprendre le changement »docker compose down supprime les containers et le réseau, mais conserve les volumes sans option -v. Au prochain up, de nouveaux containers retrouvent les mêmes données.
Faire une seule chose
Section intitulée « Faire une seule chose »Note le titre du site et les utilisateurs, exécute down puis up, et vérifie que ces informations n’ont pas changé.
docker compose -f srcs/docker-compose.yml exec wordpress sh -c 'date > /var/www/html/persistence-test.txt'
docker compose -f srcs/docker-compose.yml down
docker compose -f srcs/docker-compose.yml up -d --build
docker compose -f srcs/docker-compose.yml exec wordpress cat /var/www/html/persistence-test.txt
docker compose -f srcs/docker-compose.yml exec wordpress wp user list --allow-root --path=/var/www/htmlCe que fait chaque partie
- exec … date : crée une donnée témoin dans le volume WordPress.
- down : supprime les containers et le réseau, pas les volumes sans -v.
- up -d --build : reconstruit et recrée.
- cat/wp user list : vérifie les fichiers et les données MariaDB.
Le marqueur et les deux utilisateurs existent encore après la recréation.
Si cela échoue
Si les données disparaissent, vérifiez que down n’a pas reçu -v, que les montages utilisent les mêmes noms et que l’entrypoint n’écrase rien.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Pourquoi créer le Makefile à la fin ?
Il automatise un processus Compose déjà construit, testé et compris.
Étape 93 — Tester le redémarrage après un crash
Section intitulée « Étape 93 — Tester le redémarrage après un crash »Objectif. Tu vérifieras la politique de redémarrage avec un incident contrôlé.
État du projet avant cette étape. La persistance est prouvée ; la stack doit aussi se relever si un processus principal s’arrête anormalement.
Comprendre le changement
Section intitulée « Comprendre le changement »Quand le PID 1 meurt, le container s’arrête. La politique on-failure ou équivalente demande alors à Docker de le relancer.
Faire une seule chose
Section intitulée « Faire une seule chose »Relève le compteur de redémarrage de MariaDB, tue son PID 1, attends, puis relève de nouveau son état et le compteur.
docker compose -f srcs/docker-compose.yml exec wordpress sh -c 'echo defense > /var/www/html/defense-marker.txt'
docker compose -f srcs/docker-compose.yml exec wordpress sh -c 'kill -9 1'
sleep 5
docker inspect "$(docker compose -f srcs/docker-compose.yml ps -q wordpress)" --format 'status={{.State.Status}} restarts={{.RestartCount}}'
docker compose -f srcs/docker-compose.yml down
docker compose --env-file srcs/.env -f srcs/docker-compose.yml up -d
docker compose -f srcs/docker-compose.yml exec wordpress cat /var/www/html/defense-marker.txt
docker compose -f srcs/docker-compose.yml exec wordpress wp user list --allow-root --path=/var/www/htmlCe que fait chaque partie
- kill -9 1 depuis le container : simule le crash du processus principal sans dépendre d’un nom de container fixe.
- RestartCount : montre la reprise par la politique.
- down/up sans -v : remplace les containers mais garde les volumes.
- cat/wp : contrôle les deux stockages.
WordPress revient Up avec un compteur augmenté ; marqueur et comptes persistent après down/up.
Si cela échoue
Si le container ne revient pas, vérifiez restart. Si les données disparaissent, inspectez les noms/montages et cherchez toute suppression dans les entrypoints.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Pourquoi créer le Makefile à la fin ?
Il automatise un processus Compose déjà construit, testé et compris.
Étape 94 — Faire de make la commande d’entrée
Section intitulée « Étape 94 — Faire de make la commande d’entrée »Objectif. Tu rendras le démarrage reproductible depuis la racine.
État du projet avant cette étape. La stack fonctionne avec une longue commande Docker Compose exécutée à la main.
Comprendre le changement
Section intitulée « Comprendre le changement »Le Makefile ne remplace pas Compose : il mémorise le chemin du fichier, le fichier d’environnement et la préparation des dossiers hôte.
Faire une seule chose
Section intitulée « Faire une seule chose »Crée un Makefile dont la cible par défaut prépare /home/<login>/data puis exécute compose up -d –build.
Fichiers ou emplacements concernés
Makefile
include srcs/.env
COMPOSE = docker compose --env-file srcs/.env -f srcs/docker-compose.yml
.PHONY: all prepare build up down clean fclean re ps logs
all: up
prepare:
mkdir -p /home/$(LOGIN)/data/mariadb /home/$(LOGIN)/data/wordpress
build:
$(COMPOSE) build
up: prepare
$(COMPOSE) up -d --buildCe que fait chaque partie
- include srcs/.env : charge LOGIN et les variables Make non sensibles.
- COMPOSE : centralise les chemins lancés depuis la racine.
- .PHONY : évite qu’un fichier nommé up bloque la cible.
- all: up : make sans argument lance tout.
- prepare : crée les dossiers hôte requis.
- up : construit et démarre les trois services.
make exécute prepare puis Compose up --build.
Si cela échoue
missing separator signifie presque toujours que des espaces remplacent la tabulation avant une recette.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Pourquoi créer le Makefile à la fin ?
Il automatise un processus Compose déjà construit, testé et compris.
Étape 95 — Ajouter les commandes de maintenance
Section intitulée « Étape 95 — Ajouter les commandes de maintenance »Objectif. Tu sauras précisément ce que chaque cible conserve ou supprime.
État du projet avant cette étape. make sait démarrer le projet. Il doit aussi rendre les opérations quotidiennes prévisibles.
Comprendre le changement
Section intitulée « Comprendre le changement »down retire les containers ; clean ajoute le nettoyage des images du projet ; fclean peut supprimer les volumes et données, mais doit annoncer clairement son caractère destructif ; re reconstruit.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute les cibles réellement utiles à ton projet, avec une aide qui distingue arrêt, reconstruction et suppression des données.
Fichiers ou emplacements concernés
Makefile
down:
$(COMPOSE) down
clean: down
fclean:
$(COMPOSE) down --rmi local --volumes --remove-orphans
re: down up
ps:
$(COMPOSE) ps
logs:
$(COMPOSE) logs --tail=100Ce que fait chaque partie
- down/clean : supprime containers et réseau, conserve les volumes.
- fclean : supprime aussi les volumes et images locales ; les données sont perdues.
- re : recrée sans effacer les données persistantes.
- ps/logs : diagnostic rapide.
make down puis make up conserve le contenu ; make fclean remet volontairement à zéro.
Si cela échoue
Ne liez pas re à fclean si vous voulez préserver les données. Documentez clairement l’effet destructeur de fclean.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Pourquoi créer le Makefile à la fin ?
Il automatise un processus Compose déjà construit, testé et compris.
Étape 96 — Tester le Makefile comme un nouvel utilisateur
Section intitulée « Étape 96 — Tester le Makefile comme un nouvel utilisateur »Objectif. Tu vérifieras que la commande demandée fonctionne seule.
État du projet avant cette étape. Les cibles sont écrites, mais une faute de tabulation ou de chemin peut encore les rendre inutilisables.
Comprendre le changement
Section intitulée « Comprendre le changement »Un évaluateur lancera le projet depuis la racine. Le meilleur test consiste à arrêter proprement puis à utiliser exactement make, sans commande préparatoire cachée.
Faire une seule chose
Section intitulée « Faire une seule chose »Exécute make down, puis make. Termine par make ps et ouvre les logs si un service n’est pas Up.
make down
make
make psCe que fait chaque partie
- make down : retire l’exécution actuelle en conservant les données.
- make : appelle la première cible all, donc up.
- make ps : vérifie les trois services.
Les trois images sont disponibles et les trois services restent Up ; NGINX publie 443.
Si cela échoue
Si LOGIN est vide dans prepare, ajoutez include srcs/.env au Makefile ou calculez la valeur explicitement. Si permission denied, contrôlez la propriété de votre home.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Pourquoi créer le Makefile à la fin ?
Il automatise un processus Compose déjà construit, testé et compris.