Compléter la stack
Ajouter NGINX au même Compose et lancer les trois services.
Dans ce chapitre : 5 étapes et 17 preuves de validation.
Étape 86 — Déclarer l’identité et le build NGINX
Section intitulée « Étape 86 — Déclarer l’identité et le build NGINX »Objectif. Compose connaîtra le troisième service sans encore l’exposer.
État du projet avant cette étape. L’image NGINX est prête. Compose contient MariaDB et WordPress seulement.
Comprendre le changement
Section intitulée « Comprendre le changement »Comme auparavant, on commence par le nom, l’image et le contexte de build. Aucun port n’est ajouté tant que les autres liaisons ne sont pas contrôlées.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute le squelette nginx sous wordpress dans services.
Fichiers ou emplacements concernés
srcs/docker-compose.yml
nginx:
image: nginx:inception
build:
context: ./requirements/nginx
dockerfile: DockerfileCe que fait chaque partie
- nginx est le nom du service.
- image porte le même nom.
- build appelle le troisième Dockerfile.
Compose contient trois services et trois builds.
Si cela échoue
nginx doit être aligné avec mariadb et wordpress, pas imbriqué sous eux.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Quel service publie un port ?
Seulement NGINX, avec 443:443.
Étape 87 — Donner le domaine à NGINX
Section intitulée « Étape 87 — Donner le domaine à NGINX »Objectif. Le script pourra créer un certificat pour le bon nom.
État du projet avant cette étape. Compose sait construire NGINX mais son entrypoint ne recevrait pas DOMAIN_NAME.
Comprendre le changement
Section intitulée « Comprendre le changement »env_file charge la variable depuis srcs/.env. Ce domaine n’est pas un secret.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute env_file au service. Ne publie toujours aucun port.
Fichiers ou emplacements concernés
srcs/docker-compose.yml
env_file: .envCe que fait chaque partie
- env_file charge la même configuration non secrète que les autres services.
NGINX recevra DOMAIN_NAME au démarrage.
Si cela échoue
Vérifie que DOMAIN_NAME existe dans srcs/.env et contient ton login.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Quel service publie un port ?
Seulement NGINX, avec 443:443.
Étape 88 — Partager les fichiers WordPress et le réseau
Section intitulée « Étape 88 — Partager les fichiers WordPress et le réseau »Objectif. NGINX pourra lire le site et joindre PHP-FPM.
État du projet avant cette étape. NGINX connaît le domaine mais ne voit ni les fichiers du site ni le service WordPress.
Comprendre le changement
Section intitulée « Comprendre le changement »Le même volume wordpress_data rend /var/www/html visible dans les deux containers. Le même réseau permet à NGINX de résoudre wordpress:9000.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute le volume et le réseau au service NGINX.
Fichiers ou emplacements concernés
srcs/docker-compose.yml
volumes:
- wordpress_data:/var/www/html:ro
networks:
- inceptionCe que fait chaque partie
- Le volume partagé donne les mêmes fichiers à NGINX.
- :ro rend ce montage en lecture seule pour NGINX.
- inception fournit le DNS wordpress.
NGINX partage le volume du site en lecture seule et le réseau inception.
Si cela échoue
Un 404 futur suggère souvent un mauvais montage ; un 502 suggère la liaison wordpress:9000.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Quel service publie un port ?
Seulement NGINX, avec 443:443.
Étape 89 — Publier uniquement 443
Section intitulée « Étape 89 — Publier uniquement 443 »Objectif. Tu ouvriras la seule porte autorisée vers la VM.
État du projet avant cette étape. Les liaisons internes sont prêtes. Aucun port externe n’est encore publié.
Comprendre le changement
Section intitulée « Comprendre le changement »ports associe le port 443 de la VM au port 443 du container. depends_on ordonne la création ; restart traite les crashs. Aucun port 80, 9000 ou 3306 ne doit apparaître ailleurs.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute ces trois blocs puis relis toutes les occurrences de ports dans le fichier.
Fichiers ou emplacements concernés
srcs/docker-compose.yml
ports:
- "443:443"
depends_on:
- wordpress
restart: unless-stoppedCe que fait chaque partie
- 443:443 publie HTTPS de la VM vers NGINX.
- depends_on demande WordPress avant NGINX.
- restart relance NGINX après un crash.
Le fichier entier contient un seul mapping de port : 443:443.
Si cela échoue
Ne publie pas 80 pour une redirection : le sujet demande une entrée par 443 uniquement.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Quel service publie un port ?
Seulement NGINX, avec 443:443.
Étape 90 — Valider et démarrer la stack complète
Section intitulée « Étape 90 — Valider et démarrer la stack complète »Objectif. Tu exécuteras enfin l’architecture construite couche par couche.
État du projet avant cette étape. Le même fichier Compose contient trois services, deux volumes, un réseau et quatre secrets.
Comprendre le changement
Section intitulée « Comprendre le changement »config doit être lu avant up. up –build reconstruit les trois images. ps doit ensuite montrer trois processus stables et un seul port publié.
Faire une seule chose
Section intitulée « Faire une seule chose »Valide, démarre, attends quelques secondes puis inspecte les états et les dernières lignes de logs.
docker compose --env-file srcs/.env -f srcs/docker-compose.yml config
docker compose --env-file srcs/.env -f srcs/docker-compose.yml up -d --build
docker compose -f srcs/docker-compose.yml ps
docker compose -f srcs/docker-compose.yml logs --tail=40Ce que fait chaque partie
- config vérifie la totalité du plan.
- up crée et démarre toute la stack.
- -d rend le terminal.
- --build incorpore les derniers fichiers.
- ps et logs donnent l’état et les causes d’échec.
mariadb, wordpress et nginx restent Up ; seul nginx affiche 443:443.
Si cela échoue
Si un service redémarre, lis uniquement ses logs et corrige la première erreur avant de relancer.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Quel service publie un port ?
Seulement NGINX, avec 443:443.