WordPress et MySQL sur un seul conteneur

DOCKER
CONTENEURS
D'APP

Emballage du site web de Cornucopia
(un WordPress)

Le plan du laboratoire

WordPress et MySQL dans un seul conteneur, en quatre étapes :

01 🖥️ SERVEUR lamp

Une image officielle PHP avec Apache, on y ajoute MySQL, comme au labo Web et données et son guide.

02 🌐 SITE wordpress

Pas de nouvelle installation : on redéploie le site original cornucopia.projet.autos, ses fichiers et sa base de données.

03 🔗 LIEN volume

Détruire le conteneur, constater la perte du contenu, puis corriger avec le volume qui rend les données persistantes.

04 📈 CHARGE jmeter

Les tests de charge, cette partie ne change pas.

Le dessin du laboratoire : un seul conteneur

Une instance, un conteneur LAMP-WordPress, le port 8080 vers 80, un répertoire partagé mysql
Étape 01 🖥️

SERVEUR

lamp

Une image officielle de Docker Hub, MySQL ajouté à la main

Serveur : ce qu'il faut faire

MISSION : Créer une image Docker LAMP à partir d'une image officielle.

Tâches :

  • Partir de l'image officielle php:8.2-apache de Docker Hub.
  • Exposer le port 80 dans le Dockerfile et le « forwarder » au port 8080 avec l'option -p au lancement.
  • Activer la réécriture d'adresses (a2enmod rewrite, AllowOverride).
  • Installer MariaDB dans l'image, ainsi que ses drivers web.
  • Écrire un script (demarrer-services.sh) qui envoie la base de données en arrière-plan et le serveur web en avant-plan (grâce à exec).

Résultat attendu : une page web du conteneur est ouverte dans le navigateur de la machine hôte à localhost:8080. Suivre le GUIDE.

localhost:8080 navigateur de la machine hôte port 80 Apache le conteneur
Étape 02 🌐

SITE

wordpress

La boutique de Cornucopia renaît dans votre conteneur

Site : ce qu'il faut faire

MISSION : Redéployer le site WordPress de Cornucopia dans le conteneur.

Tâches :

  • Visiter le site original, cornucopia.projet.autos : le site en ligne que votre conteneur doit reproduire.
  • Télécharger et déballer sauvegarde-cornucopia-web.zip (39 Mo) : le dossier fichiers-wordpress/ et l'export base-de-donnees.sql.
  • Copier les fichiers dans /var/www/html/ (avec chown www-data) et l'export dans /docker-entree/.
  • Créer et importer la base de données en tenant compte des valeurs de wp-config.php et de README.md.
  • Déposer Adminer (un seul fichier, adminer.php) dans le site pour inspecter la base de données.

Résultats attendus : la boutique de Flora s'affiche sur localhost:8080, avec ses articles et ses images. Le panneau administrateur localhost:8080/wp-admin peut être utilisé avec les comptes de l'agence, de flora et de hazel. Adminer montre les tables de la base de données. Suivre le GUIDE.

cornucopia.projet.autos le site en ligne sauvegarde-cornucopia-web.zip WordPress l'image Docker
Étape 03 🔗

LIEN

volume

Perdre les données, puis les protéger pour de bon

Lien : ce qu'il faut faire

MISSION : Rendre les données du site persistantes avec un volume.

Tâches :

  • Publier un court article de test dans le WordPress conteneurisé et vérifier qu'il s'affiche.
  • Détruire le conteneur (docker rm -f), en relancer un neuf, recharger : constater la perte de l'article.
  • Relancer le conteneur avec le volume -v ${PWD}/mysql:/var/lib/mysql.
  • Republier l'article, détruire et relancer encore : constater la survie des données.

Résultat attendu : on peut ajouter un article dans le site, détruire le conteneur, le recréer et ne pas perdre cet article. Suivre le GUIDE.

le conteneur détruit le conteneur recréé -v mysql/ Récolte de courges Paniers d'automne Article de test la machine hôte
Étape 04 📈

CHARGE

jmeter

Le conteneur sous pression, chiffres à l'appui

Charge : ce qu'il faut faire

MISSION : Mesurer la tenue en charge du site conteneurisé avec JMeter.

Tâches :

  • Reprendre le laboratoire Test de charge avec JMeter, cette partie ne change pas.
  • Cibler http://localhost:8080/, la page d'accueil du WordPress conteneurisé.
  • Mesurer en montée en charge : temps de réponse moyen, débit, taux d'erreur.
  • Noter le seuil d'utilisateurs simultanés où les temps de réponse se dégradent.

Résultat attendu : un rapport JMeter contre le conteneur, point de comparaison pour la suite du cours. Suivre le GUIDE.

JMeter : des utilisateurs simultanés le conteneur sous pression temps de réponse