Si en local ou en prod vous développez encore WordPress avec XAMPP, WAMP ou MAMP en 2026, vous utilisez une solution qui fonctionne certes… mais qui n’est plus la plus moderne ni la plus robuste.

Aujourd’hui, Docker est devenu le standard professionnel pour créer des environnements isolés, reproductibles et propres.

Dans ce petit guide, nous verrons ensemble :

  • Comprendre Docker vs XAMPP
  • Installer Docker correctement
  • Créer un environnement WordPress prêt à l’emploi
  • Monter le dossier wp-content
  • Rendre MySQL persistant
  • Ajouter MailHog pour tester les emails

J’espère qu’à la fin de cet article, tout sera fonctionnel de votre côté, mais aussi, vous aurez pris en main l’installation et la configuration Docker pour un environnement dev WordPress en local.

Docker vs XAMPPMAMPWAMPLAMP

Docker vs XAMPP/MAMP/WAMP/LAMP

XAMPP , WAMP, MAMP, LAMP

XAMPP , WAMP, MAMP ou encore LAMP, sont des environnements locaux “tout-en-un” qui installent Apache (pour la lettre A), MySQL/MariaDB (pour le M), PHP et phpMyAdmin (pour le P). La première lettre M, W ou L représente le système d’exploitation MacOS, Windows ou Linux.

Ces environnements tout-en-un ont pour avantage de fournir une installation rapide (quelques minutes seulement), et une Interface graphique simple et adapté même au débutant, ce qui fait d’eux des outils extrêmement puissant, ergonomique et facile à utiliser.

Ils ont cependant certains désavantages. En dev local, l’environnement permet de développer et tester des projets sur ton ordinateur. Par contre, il peut rapidement poser problème dès que les besoins se diversifient. Par exemple, chaque projet peut demander une configuration particulière : si un collègue utilise une version différente ou installe des outils spécifiques, des bugs peuvent apparaître lors du partage du code. Il devient compliqué d’ajouter certains composants comme Redis, Node.js ou Elasticsearch, ou de gérer plusieurs bases de données et un reverse proxy. De plus, ces environnements ne reflètent pas les infrastructures utilisées le plus en ligne en 2026, où l’on retrouve des solutions comme Docker, Kubernetes ou des VPS Linux configurés. Cela montre l’importance de bien choisir son environnement de développement selon les exigences du projet et du travail en équipe.

Docker

Docker lui, permet d’isoler chaque projet dans son propre environnement, évitant tout conflit de versions ou de configuration. Par exemple, tu peux définir un service PHP 8.2 et un service MySQL 8 pour un projet, tandis qu’un autre projet utilise PHP 7.4, le tout sans interférence. La commande docker compose up garantit que l’environnement fonctionne de la même manière sur Windows, Mac, Linux ou un serveur distant.

Avec Docker, tu contrôles précisément les versions de PHP, MySQL, Apache ou Nginx, et tu peux facilement ajouter des outils comme Redis, Mailhog, Elasticsearch ou Node.js selon les besoins. Cette approche est devenue la norme en entreprise, utilisée par les startups, agences web, grandes sociétés et intégrée dans les pipelines CI/CD (GitHub Actions, GitLab CI, Jenkins).

XAMPP, MAMP ou WAMP sont idéals pour commencer, mais Docker est la solution professionnelle pour un environnement stable et une collaboration sans souci.

Critère XAMPP / WAMP / MAMP Docker
Installation ✔ Rapide et simple ⚠ Installation initiale plus technique
Isolation des projets ❌ Version globale unique ✔ Environnement isolé par projet
Gestion des versions ❌ Conflits possibles ✔ Versions contrôlées (PHP, MySQL…)
Reproductibilité ❌ Dépend de la machine ✔ Identique partout
Architecture complexe ❌ Limitée ✔ Multi-services (Redis, Node, etc.)
Utilisation en entreprise ⚠ Rare en production ✔ Standard professionnel
CI/CD ❌ Non adapté ✔ Intégration DevOps native

1. Comment installer Docker

Sur Windows:

Rendez-vous sur le site officiel pour télécharger Docker Desktop

    Docker Desktop est l’application officielle qui installe : Docker Engine, Docker CLI, Docker Compose et l’intégration WSL2. Nous aborderons ces differents outils plus loin. Mais sachez que Docker Desktop est la solution recommandée par Docker pour Windows.

    Une fois téléchargé, double cliquer sur le setup et installer normalement. L’installation est classique (Next → Next → Install). Docker Desktop va automatiquement configurer les composants nécessaires.

    Activer WSL2 si demandé. Docker utilise WSL2 (Windows Subsystem for Linux) pour fonctionner correctement. Pourquoi ? Docker repose sur un noyau Linux, WSL2 fournit un environnement Linux léger dans Windows, meilleures performances que l’ancien mode Hyper-V. Donc si WSL2 n’est pas activé, Docker proposera de l’installer automatiquement.

    Vérifions maintenant l’installation. Pour le faire, ouvrez votre cmd (invite de commande) et tapper successivement:

    docker --version
    docker compose version
    

    docker --version → Vérifie que Docker est installé et docker compose version → Vérifie que Docker Compose est disponible. Si les versions s’affichent → installation réussie

    Vous pouvez retrouver l’icone de Docker Desktop sur votre bureau, double cliquer pour l’ouvrir

    Sur macOS

    Même procédure via Docker Desktop. Aller sur le site officiel de Docker, télécharger Docker Desktop et installer. Docker Desktop pour macOS inclut Docker Engine, Docker Compose, Interface graphique et la Gestion des conteneurs.

    Docker Deskptop pour macOS est compatible avec Mac Intel et Apple Silicon (M1/M2/M3).

    Après installation, vérifier avec les commandes suivante dans le terminal:

    docker --version
    docker compose version
    

    Si les versions s’affichent → Docker fonctionne.

    Sur Linux (Ubuntu)

    Sur Ubuntu ou d’autres distributions Linux, le processus est quasi le même. Docker Desktop n’est pas obligatoire. On installe directement Docker Engine.

    On va d’abord mettre à jour la liste des paquets disponibles avec la commande:

    sudo apt update
    

    Puis, on installe Docker et Docker Compose avec la commande:

    sudo apt install docker.io docker-compose-plugin
    

    docker.io → installe Docker Engine et docker-compose-plugin → installe Docker Compose v2. Compose est désormais intégré à Docker (docker compose et non plus docker-compose).

    On va maintenant démarrer Docker avec la commande:

    sudo systemctl start docker
    

    Cette commande démarre le service Docker immédiatement.

    Optionnel dans ce tuto, mais toujours utils et necéssaire au quotidien, voici comment configurer Docker pour démarrer automatiquement à chaque boot du système:

    sudo systemctl enable docker
    

    On peut tester l’intallation maintenant en tappant les deux commandes suivantes:

    docker --version
    docker run hello-world
    

    Si un message de succès s’affiche → Docker fonctionne parfaitement.

    sudo usermod -aG docker $USER
    

    Puis, redémarrer la session. La commande a ajouté ton utilisateur au groupe Docker pour exécuter les commandes sans privilèges root.


    2. Créer un environnement WordPress avec Docker Compose

    Nous voilà dans le vif du sujet maintenant. Voyons comment créer l’environnement et installer WordPress avec Docker Compose. Pour le tutoriel, tout est fait sur Windows.

    On va tout d’abord créer un dossier pour le projet « wordpress-docker« . Et pour cela, vous pouvez le faire graphiquement ou en tappant les commandes cmd:

    mkdir wordpress-docker
    cd wordpress-docker
    

    Bonne pratique : toujours isoler chaque projet Docker dans son propre dossier.

    On va maintenant créer un fichier docker-compose.yml. Ce fichier va décrire toute notre infrastructure, c’est à dire : WordPress, Base de données MySQL, Volumes et Réseau interne

    Voici le contenu à coller dans votre docker-compose.yml:

    version: '3.9'
    
    services:
      wordpress:
        image: wordpress:latest
        container_name: wp_app
        ports:
          - "8080:80"
        environment:
          WORDPRESS_DB_HOST: db
          WORDPRESS_DB_USER: wpuser
          WORDPRESS_DB_PASSWORD: wppassword
          WORDPRESS_DB_NAME: wpdatabase
        volumes:
          - ./wp-content:/var/www/html/wp-content
        depends_on:
          - db
    
      db:
        image: mysql:8.0
        container_name: wp_db
        restart: always
        environment:
          MYSQL_DATABASE: wpdatabase
          MYSQL_USER: wpuser
          MYSQL_PASSWORD: wppassword
          MYSQL_ROOT_PASSWORD: rootpassword
        volumes:
          - db_data:/var/lib/mysql
    
    volumes:
      db_data:
    
    

    Décortiquons ce fichier et analysons le ligne par ligne:

    version: '3.9'
    

    Cette ligne indique la version du format Docker Compose utilisée. 3.9 est compatible avec Docker moderne.

    Dans le fichier, nous pouvons configuré les services de notre installation WordPress et MySQL.Analysons les:

    Services WordPress

    services:
      wordpress:
        image: wordpress:latest
        container_name: wp_app
        ports:
          - "8080:80"
        environment:
          WORDPRESS_DB_HOST: db
          WORDPRESS_DB_USER: wpuser
          WORDPRESS_DB_PASSWORD: wppassword
          WORDPRESS_DB_NAME: wpdatabase
        volumes:
          - ./wp-content:/var/www/html/wp-content
        depends_on:
          - db
    

    wordpress: → Ce nom définit le service WordPress et Docker l’utilise comme nom DNS interne dans le réseau du projet.

    image: wordpress:latest → Cette ligne indique que Docker doit télécharger et utiliser l’image officielle WordPress dans sa version la plus récente.

    container_name: wp_app → Cette configuration attribue un nom explicite au conteneur afin de le rendre plus facile à identifier et à gérer.

    ports: "8080:80" → Cette configuration relie le port 8080 de votre machine au port 80 du conteneur afin de rendre WordPress accessible via http://localhost:8080.
    Le port 8080 correspond à votre ordinateur.
    Le port 80 correspond au serveur web Apache à l’intérieur du conteneur.

    environment: → Cette section définit les variables d’environnement nécessaires pour connecter WordPress à la base de données.

    WORDPRESS_DB_HOST: db → Cette variable indique que WordPress doit se connecter au service nommé « db », que Docker résout automatiquement grâce à son réseau interne.

    WORDPRESS_DB_USER / WORDPRESS_DB_PASSWORD / WORDPRESS_DB_NAME → Ces variables définissent les identifiants de connexion qui doivent correspondre exactement à ceux configurés dans le service MySQL.

    volumes: → Cette configuration synchronise le dossier wp-content du conteneur avec un dossier présent sur votre machine afin de conserver les thèmes, plugins et fichiers uploadés même si vous recréez les conteneurs.

    depends_on: db → Cette directive indique que Docker doit démarrer le service MySQL avant de lancer le service WordPress afin de respecter l’ordre de dépendance.

    Services MySQL

    services:
      db:
        image: mysql:8.0
        container_name: wp_db
        restart: always
        environment:
          MYSQL_DATABASE: wpdatabase
          MYSQL_USER: wpuser
          MYSQL_PASSWORD: wppassword
          MYSQL_ROOT_PASSWORD: rootpassword
        volumes:
          - db_data:/var/lib/mysql
    

    db: → Ce nom définit le service MySQL et permet à WordPress de l’identifier comme hôte de base de données dans le réseau Docker.

    image: mysql:8.0 → Cette ligne indique que Docker doit utiliser l’image officielle MySQL en version 8.0.

    container_name: wp_db → Cette configuration attribue un nom clair au conteneur MySQL afin de faciliter son administration.

    restart: always → Cette directive configure Docker pour redémarrer automatiquement le conteneur en cas de crash ou après un redémarrage de la machine.

    environment: → Cette section configure automatiquement la base de données lors du premier lancement du conteneur.

    MYSQL_DATABASE: wpdatabase → Cette variable demande à MySQL de créer une base de données nommée « wpdatabase ».

    MYSQL_USER: wpuser → Cette variable crée un utilisateur MySQL nommé « wpuser ».

    MYSQL_PASSWORD: wppassword → Cette variable définit le mot de passe associé à l’utilisateur MySQL.

    MYSQL_ROOT_PASSWORD: rootpassword → Cette variable définit le mot de passe administrateur principal de MySQL.

    volumes: db_data:/var/lib/mysql → Cette configuration monte un volume persistant dans le dossier interne où MySQL stocke ses données afin de conserver les informations même si le conteneur est supprimé.

    Déclaration des volumes globaux (code)

    volumes:
      db_data:
    

    volumes: → Cette section déclare les volumes Docker gérés au niveau global du projet.

    db_data: → Cette déclaration demande à Docker de créer un volume nommé « db_data » qui sera utilisé pour stocker les données de la base MySQL de manière persistante.

    Globalement, dans notre docker_compose, les services décrivent des conteneurs, et les volumes décrivent des ressources partagées/persistantes gérées par Docker.

    Tout est prêt maintenant côté Docker. On va passer àà l’installation de WordPress


    3. Installation et lancement de WordPress

    Dans le dossier du projet, lancer WordPress:

    docker compose up -d
    

    docker compose up -d → Cette commande demande à Docker de lire le fichier docker-compose.yml, de créer les conteneurs nécessaires et de les démarrer en arrière-plan.

    L’option -d (detached) → Cette option permet au terminal de fonctionner normalement pendant que les conteneurs tournent en arrière-plan.

    Docker → Télécharge automatiquement les images si elles ne sont pas encore présentes sur votre machine.

    Docker → Crée automatiquement un réseau interne pour permettre la communication entre WordPress et MySQL.

    http://localhost:8080 → Cette adresse permet d’accéder à votre installation WordPress via le navigateur.

    Le navigateur → Se connecte au port 8080 de votre machine.

    Docker → Redirige ce port vers le port 80 du conteneur WordPress.

    WordPress → Lance automatiquement son assistant d’installation lors du premier accès.

    Poursuivons l’installation et configuration de WordPress

    Petite erreurs oups. Rectifions:


    4. Montage du dossier wp-content

    Dans la configuration précédente :

    volumes:
      - ./wp-content:/var/www/html/wp-content
    

    ./wp-content → Ce chemin représente un dossier présent sur votre machine locale.

    /var/www/html/wp-content → Ce chemin correspond au dossier wp-content à l’intérieur du conteneur WordPress.

    Docker → Synchronise ces deux dossiers en temps réel.

    Votre dossier local wp-content → Contient directement les thèmes, plugins et fichiers uploadés.

    Docker → Copie immédiatement les modifications locales vers le conteneur.

    Le conteneur → Utilise ces fichiers comme s’ils étaient internes.

    Vous pouvez modifier vos thèmes et plugins directement depuis votre éditeur local sans entrer dans le conteneur.

    Les fichiers ne sont pas supprimés si vous exécutez docker compose down, car ils restent stockés sur votre machine.

    Le projet devient portable, car vous pouvez partager le dossier avec un autre développeur qui obtiendra exactement la même structure.

    Rendez vous sur le site de WordPress pour obtenir plus de thème ou simplement dans l’espace d’administraion WordPress: Tableau de bord > Apparence > Thème

    Affichage de mon site WordPress sur http://localhost:8080/


    5. MySQL persistant

    volumes:
      - db_data:/var/lib/mysql
    

    db_data:/var/lib/mysql → Cette configuration monte un volume Docker nommé db_data dans le dossier interne où MySQL stocke ses données.

    MySQL → Enregistre toutes les bases de données dans le dossier /var/lib/mysql.

    Docker → Stocke ces données dans un volume persistant au lieu de les garder uniquement dans le conteneur.

    Cette configuration → Empêche la perte des données lorsque le conteneur est supprimé.

    Vérifier le volume

    docker volume ls
    

    docker volume ls → Cette commande affiche la liste des volumes Docker présents sur votre machine.

    Docker → Doit afficher un volume nommé db_data si la configuration fonctionne correctement.

    Si vous stoppez Docker

    docker compose down
    docker compose up -d
    

    docker compose down → Cette commande supprime les conteneurs mais conserve les volumes.

    docker compose up -d → Cette commande recrée les conteneurs en réutilisant le volume existant.

    MySQL → Recharge automatiquement les données depuis le volume db_data.

    La base de données → Reste intacte malgré la suppression du conteneur.


    6. Ajouter MailHog (emails locaux)

    Ajouter dans docker-compose.yml :

    mailhog:
      image: mailhog/mailhog
      ports:
        - "8025:8025"
    

    mailhog: → Ce service définit un conteneur dédié à la capture des emails envoyés en local.

    image: mailhog/mailhog → Cette ligne indique que Docker doit utiliser l’image officielle MailHog.

    ports: "8025:8025" → Cette configuration rend l’interface web de MailHog accessible via le port 8025 sur votre machine.

    Le port 8025 → Permet d’accéder à l’interface web via http://localhost:8025.

    Modifier WordPress

    wordpress:
      environment:
        WORDPRESS_SMTP_HOST: mailhog
    

    WORDPRESS_SMTP_HOST: mailhog → Cette variable indique à WordPress d’envoyer les emails vers le service MailHog au lieu d’un serveur SMTP réel.

    Docker → Permet à WordPress de contacter MailHog grâce au réseau interne et au nom du service.

    WordPress → Envoie tous les emails (mot de passe oublié, notifications, etc.) vers MailHog.

    Relancer les services

    docker compose down
    docker compose up -d
    

    docker compose down → Cette commande arrête et supprime les conteneurs existants.

    docker compose up -d → Cette commande recrée les conteneurs avec la nouvelle configuration.

    Docker → Applique les modifications du fichier docker-compose.yml.

    Accéder à MailHog

    http://localhost:8025 Cette adresse → Permet d’accéder à l’interface web MailHog depuis votre navigateur.

    MailHog → Affiche tous les emails envoyés par WordPress.

    Cette configuration → Permet de tester les emails en local sans envoyer de vrais messages.

    Quelques Commandes utiles

    Commande À quoi ça sert Quand l’utiliser Fréquence
    docker compose up -d Démarre tous les services du projet en arrière-plan (WordPress, MySQL, etc.). Quand tu veux lancer ton environnement local rapidement. ✅ Quotidien
    docker compose down Arrête et supprime les conteneurs (sans supprimer les volumes, donc la base reste). Quand tu veux stopper proprement le projet. 🔁 Souvent
    docker compose restart Redémarre les services sans supprimer les conteneurs. Après une modification de configuration ou si un service bug. 🔁 Souvent
    docker compose logs -f Affiche les logs en temps réel (follow) de tous les services. Quand tu débogues une erreur (PHP, MySQL, WordPress, etc.). ✅ Quotidien
    docker compose logs -f wordpress Affiche uniquement les logs du service WordPress (plus lisible). Quand tu veux isoler les messages d’Apache/PHP/WordPress. 🔁 Souvent
    docker compose exec wordpress bash Ouvre un terminal dans le conteneur WordPress. Quand tu dois lancer des commandes dans le conteneur (WP-CLI, PHP, etc.). 🔁 Souvent
    docker compose exec wordpress wp plugin list Exécute une commande WP-CLI dans le conteneur (ici : liste des plugins). Quand tu administres WordPress en ligne de commande. ⚡ Occasionnel
    docker compose down -v Supprime conteneurs + volumes (réinitialise la base de données). Quand tu veux repartir de zéro (attention : pertes de données). ⚠️ Rare
    docker ps Liste les conteneurs actuellement en cours d’exécution. Quand tu vérifies si les services tournent bien. ⚡ Occasionnel
    docker volume ls Liste les volumes Docker (données persistantes, ex : MySQL). Quand tu veux vérifier la persistance ou nettoyer des volumes. ⚡ Occasionnel

    Résultat final

    Vous avez :

    ✔ Un WordPress en local, prêt à installer en quelques secondes
    ✔ Une base MySQL persistante, qui conserve vos données même après arrêt des conteneurs
    ✔ Le dossier wp-content monté, pour modifier thèmes et plugins directement depuis votre machine
    ✔ MailHog, pour tester les emails en local sans envoyer de vrais messages
    ✔ Un environnement reproductible, identique sur toutes les machines (Windows, Mac, Linux)

    C’est exactement le type de configuration utilisée en agence et en entreprise pour travailler proprement et sans surprises.

    Conclusion

    Docker est aujourd’hui la meilleure solution pour développer WordPress proprement.

    Il réduit les conflits de versions, facilite le travail en équipe et rend votre environnement cohérent du développement jusqu’à la mise en production.

    J’espère que vous avez apprécié ce tutoriel. A la prochaine !

    Comments

    No comments yet. Why don’t you start the discussion?

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *