Ajouter WordPress à Compose
Ajouter le deuxième service sans mélanger build, secrets, réseau et volume.
Dans ce chapitre : 8 étapes et 27 preuves de validation.
Étape 66 — Ajouter les valeurs WordPress locales
Section intitulée « Étape 66 — Ajouter les valeurs WordPress locales »Objectif. Compose disposera des noms publics dans .env et des mots de passe dans secrets.
État du projet avant cette étape. L’image WordPress est prête, mais ses valeurs runtime ne sont pas encore écrites.
Comprendre le changement
Section intitulée « Comprendre le changement »Le domaine, le titre, les noms et les emails ne sont pas secrets : ils vont dans .env. Les deux mots de passe restent dans leurs fichiers locaux ignorés.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute les six variables proposées dans srcs/.env. Remplis ensuite wp_admin_password.txt et wp_user_password.txt avec ton éditeur, sans afficher leur contenu.
Fichiers ou emplacements concernés
srcs/.envsecrets/wp_admin_password.txtsecrets/wp_user_password.txt
DOMAIN_NAME=votrelogin.42.fr
WP_TITLE=Inception
WP_ADMIN_USER=site_owner
WP_ADMIN_EMAIL=owner@example.test
WP_USER=editor42
WP_USER_EMAIL=editor@example.testCe que fait chaque partie
- DOMAIN_NAME est le futur nom local.
- WP_ADMIN_USER respecte la règle car il ne contient pas admin.
- Les emails peuvent être locaux pour le projet.
- Aucun mot de passe n’est présent.
Les six variables sont ajoutées sans valeur confidentielle.
Si cela échoue
Ne nomme pas le compte admin42 : la sous-chaîne admin est interdite.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Comment WordPress contacte-t-il la base ?
Par mariadb:3306 dans le réseau Docker partagé.
Étape 67 — Déclarer l’identité et le build WordPress
Section intitulée « Étape 67 — Déclarer l’identité et le build WordPress »Objectif. Compose passera de un à deux services sans lancer le nouveau.
État du projet avant cette étape. L’image est définie et les valeurs locales existent. Compose connaît toujours seulement MariaDB.
Comprendre le changement
Section intitulée « Comprendre le changement »Le premier morceau WordPress contient uniquement son nom, son image et son Dockerfile. Les variables, secrets, réseau et volume seront ajoutés séparément.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute ce squelette sous mariadb dans services.
Fichiers ou emplacements concernés
srcs/docker-compose.yml
wordpress:
image: wordpress:inception
build:
context: ./requirements/wordpress
dockerfile: DockerfileCe que fait chaque partie
- wordpress est le deuxième nom de service.
- image respecte le même nom.
- build pointe vers le deuxième Dockerfile.
Compose décrit deux services et deux builds.
Si cela échoue
wordpress doit être sous services, pas imbriqué dans mariadb.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Comment WordPress contacte-t-il la base ?
Par mariadb:3306 dans le réseau Docker partagé.
Étape 68 — Transmettre les variables et chemins de secrets
Section intitulée « Étape 68 — Transmettre les variables et chemins de secrets »Objectif. Le futur entrypoint recevra les noms publics et les chemins confidentiels.
État du projet avant cette étape. Compose sait construire WordPress, mais son script ne recevrait aucune valeur au démarrage.
Comprendre le changement
Section intitulée « Comprendre le changement »env_file charge les valeurs non secrètes. environment transmet les chemins /run/secrets attendus. secrets autorise le montage de ces trois fichiers dans ce service.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute ces blocs sous build. Ne déclare pas encore les sources globales des deux nouveaux secrets.
Fichiers ou emplacements concernés
srcs/docker-compose.yml
env_file: .env
environment:
MYSQL_PASSWORD_FILE: /run/secrets/db_password
WP_ADMIN_PASSWORD_FILE: /run/secrets/wp_admin_password
WP_USER_PASSWORD_FILE: /run/secrets/wp_user_password
secrets:
- db_password
- wp_admin_password
- wp_user_passwordCe que fait chaque partie
- env_file charge srcs/.env.
- environment contient seulement des chemins, pas les mots de passe.
- secrets limite les fichiers montés dans WordPress.
Le service reçoit trois variables *_FILE et trois secrets.
Si cela échoue
N’écris jamais la valeur d’un mot de passe après les deux-points.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Comment WordPress contacte-t-il la base ?
Par mariadb:3306 dans le réseau Docker partagé.
Étape 69 — Déclarer les deux secrets WordPress
Section intitulée « Étape 69 — Déclarer les deux secrets WordPress »Objectif. Compose saura quels fichiers locaux monter.
État du projet avant cette étape. Le service cite wp_admin_password et wp_user_password, mais la section secrets globale ne les définit pas encore.
Comprendre le changement
Section intitulée « Comprendre le changement »La déclaration globale associe un nom Compose à un fichier local ignoré par Git. Elle ne place pas la valeur dans le YAML.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute les deux entrées à la section secrets existante, à côté des secrets MariaDB.
Fichiers ou emplacements concernés
srcs/docker-compose.ymlsecrets/
wp_admin_password:
file: ../secrets/wp_admin_password.txt
wp_user_password:
file: ../secrets/wp_user_password.txtCe que fait chaque partie
- Chaque nom correspond exactement au nom cité par le service.
- Les chemins partent du dossier srcs vers ../secrets.
- Seul le chemin est versionné, pas la valeur.
Quatre secrets globaux existent au total.
Si cela échoue
undefined secret signifie que le nom du service et le nom global ne sont pas identiques.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Comment WordPress contacte-t-il la base ?
Par mariadb:3306 dans le réseau Docker partagé.
Étape 70 — Connecter WordPress au réseau
Section intitulée « Étape 70 — Connecter WordPress au réseau »Objectif. Le deuxième service pourra résoudre mariadb par son nom.
État du projet avant cette étape. MariaDB appartient au réseau inception ; WordPress n’est relié à aucun réseau explicite.
Comprendre le changement
Section intitulée « Comprendre le changement »Deux containers ne communiquent par leur nom que s’ils partagent un réseau Docker. Le nom stable à utiliser est mariadb, pas l’IP observée.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute inception au service WordPress puis une politique de redémarrage et depends_on pour l’ordre de création.
Fichiers ou emplacements concernés
srcs/docker-compose.yml
networks:
- inception
depends_on:
- mariadb
restart: unless-stoppedCe que fait chaque partie
- networks place WordPress avec MariaDB.
- depends_on ordonne la création mais ne garantit pas que MariaDB soit prête.
- L’entrypoint garde donc son attente bornée.
- restart traite un arrêt anormal.
WordPress partage inception et dépend de mariadb.
Si cela échoue
N’ajoute ni links, ni network_mode: host, ni IP fixe.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Comment WordPress contacte-t-il la base ?
Par mariadb:3306 dans le réseau Docker partagé.
Étape 71 — Déclarer le volume WordPress
Section intitulée « Étape 71 — Déclarer le volume WordPress »Objectif. Tu créeras le deuxième stockage nommé sans encore l’attacher.
État du projet avant cette étape. Le service est configuré, mais /var/www/html serait encore interne au container.
Comprendre le changement
Section intitulée « Comprendre le changement »wordpress_data est un autre objet volume, avec un autre dossier hôte. Il ne doit jamais réutiliser mariadb_data.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute wordpress_data dans la section volumes globale existante.
Fichiers ou emplacements concernés
srcs/docker-compose.yml
wordpress_data:
name: wordpress_data
driver: local
driver_opts:
type: none
o: bind
device: /home/${LOGIN}/data/wordpressCe que fait chaque partie
- wordpress_data est distinct de mariadb_data.
- device vise le dossier wordpress de la VM.
Deux volumes globaux distincts apparaissent dans config.
Si cela échoue
Vérifie que le dossier /home/$USER/data/wordpress existe avant le démarrage.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Comment WordPress contacte-t-il la base ?
Par mariadb:3306 dans le réseau Docker partagé.
Étape 72 — Attacher le volume à WordPress
Section intitulée « Étape 72 — Attacher le volume à WordPress »Objectif. Les fichiers du site sortiront du cycle de vie du container.
État du projet avant cette étape. wordpress_data existe dans le plan mais le service ne le monte pas.
Comprendre le changement
Section intitulée « Comprendre le changement »/var/www/html contient le cœur WordPress, wp-config.php, thèmes et extensions. C’est cette destination qui doit survivre.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute le montage nommé dans le service WordPress.
Fichiers ou emplacements concernés
srcs/docker-compose.yml
volumes:
- wordpress_data:/var/www/htmlCe que fait chaque partie
- La source est le volume nommé.
- La destination est le dossier de travail WordPress.
WordPress monte wordpress_data sur /var/www/html.
Si cela échoue
Un chemin /home/... placé ici créerait un bind mount direct interdit.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Comment WordPress contacte-t-il la base ?
Par mariadb:3306 dans le réseau Docker partagé.
Étape 73 — Valider puis démarrer deux services
Section intitulée « Étape 73 — Valider puis démarrer deux services »Objectif. Tu observeras la première communication réelle entre containers.
État du projet avant cette étape. Compose contient MariaDB et WordPress, leurs secrets, leurs volumes et le réseau.
Comprendre le changement
Section intitulée « Comprendre le changement »config vérifie le plan complet avant action. up construit et démarre les deux services. getent depuis WordPress prouve ensuite que le DNS Docker résout mariadb.
Faire une seule chose
Section intitulée « Faire une seule chose »Valide, construis, démarre puis teste le DNS et les comptes WordPress. N’ajoute pas encore NGINX.
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 mariadb wordpress
docker compose -f srcs/docker-compose.yml ps
docker compose -f srcs/docker-compose.yml exec wordpress getent hosts mariadb
docker compose -f srcs/docker-compose.yml exec wordpress wp user list --allow-root --path=/var/www/htmlCe que fait chaque partie
- config valide avant de modifier l’exécution.
- up construit puis démarre les deux services seulement.
- ps montre leur stabilité.
- getent teste le DNS interne.
- wp user list interroge l’installation réelle.
Deux services restent Up, mariadb résout vers une IP privée et deux utilisateurs sont listés.
Si cela échoue
Si WordPress redémarre, lis d’abord ses logs puis ceux de MariaDB ; ne masque pas la panne avec une boucle infinie.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Comment WordPress contacte-t-il la base ?
Par mariadb:3306 dans le réseau Docker partagé.