Aller au contenu

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.

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.

Ajoute le squelette nginx sous wordpress dans services.

Fichiers ou emplacements concernés

  • srcs/docker-compose.yml
À ÉCRIRE DANSFichier srcs/docker-compose.yml · troisième service
  nginx:
    image: nginx:inception
    build:
      context: ./requirements/nginx
      dockerfile: Dockerfile
Ce que fait chaque partie
  1. nginx est le nom du service.
  2. image porte le même nom.
  3. build appelle le troisième Dockerfile.
Résultat attendu

Compose contient trois services et trois builds.

Si cela échoue

nginx doit être aligné avec mariadb et wordpress, pas imbriqué sous eux.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

Question de soutenance — Quel service publie un port ?

Seulement NGINX, avec 443:443.

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.

env_file charge la variable depuis srcs/.env. Ce domaine n’est pas un secret.

Ajoute env_file au service. Ne publie toujours aucun port.

Fichiers ou emplacements concernés

  • srcs/docker-compose.yml
À ÉCRIRE DANSFichier srcs/docker-compose.yml · dans nginx
    env_file: .env
Ce que fait chaque partie
  1. env_file charge la même configuration non secrète que les autres services.
Résultat attendu

NGINX recevra DOMAIN_NAME au démarrage.

Si cela échoue

Vérifie que DOMAIN_NAME existe dans srcs/.env et contient ton login.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.

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.

Ajoute le volume et le réseau au service NGINX.

Fichiers ou emplacements concernés

  • srcs/docker-compose.yml
À ÉCRIRE DANSFichier srcs/docker-compose.yml · dans nginx
    volumes:
      - wordpress_data:/var/www/html:ro
    networks:
      - inception
Ce que fait chaque partie
  1. Le volume partagé donne les mêmes fichiers à NGINX.
  2. :ro rend ce montage en lecture seule pour NGINX.
  3. inception fournit le DNS wordpress.
Résultat attendu

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.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

Question de soutenance — Quel service publie un port ?

Seulement NGINX, avec 443: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é.

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.

Ajoute ces trois blocs puis relis toutes les occurrences de ports dans le fichier.

Fichiers ou emplacements concernés

  • srcs/docker-compose.yml
À ÉCRIRE DANSFichier srcs/docker-compose.yml · dans nginx
    ports:
      - "443:443"
    depends_on:
      - wordpress
    restart: unless-stopped
Ce que fait chaque partie
  1. 443:443 publie HTTPS de la VM vers NGINX.
  2. depends_on demande WordPress avant NGINX.
  3. restart relance NGINX après un crash.
Résultat attendu

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.

Preuves de validation 0 / 4

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.

config doit être lu avant up. up –build reconstruit les trois images. ps doit ensuite montrer trois processus stables et un seul port publié.

Valide, démarre, attends quelques secondes puis inspecte les états et les dernières lignes de logs.

À EXÉCUTER DANSDans la VM · racine du repository
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=40
Ce que fait chaque partie
  1. config vérifie la totalité du plan.
  2. up crée et démarre toute la stack.
  3. -d rend le terminal.
  4. --build incorpore les derniers fichiers.
  5. ps et logs donnent l’état et les causes d’échec.
Résultat attendu

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.

Preuves de validation 0 / 4

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

Question de soutenance — Quel service publie un port ?

Seulement NGINX, avec 443:443.