vendredi 25 septembre 2026

À propos

Contact

Outils & workflow

Un docker-compose fait maison pour WordPress, sans passer par DDEV ni Lando

Construire soi-même les services PHP, MySQL et nginx d'un environnement WordPress, pour garder un contrôle total sur chaque ligne de configuration.

Par Clément Hadrot • 18 juillet 2021 • 4 min de lecture • Aucun commentaire
Un docker-compose fait maison pour WordPress, sans passer par DDEV ni Lando

DDEV et Lando emballent tout ce dont un environnement WordPress a besoin derrière une commande unique. C’est confortable, mais cela laisse aussi une partie de la configuration hors de vue : le fichier PHP-FPM utilisé, la configuration nginx exacte, les variables MySQL par défaut. Pour une équipe qui veut comprendre et ajuster chaque paramètre, ou qui a besoin d’une configuration très spécifique difficile à faire rentrer dans le moule d’un outil packagé, construire son propre docker-compose.yml reste une option tout à fait raisonnable.

Ce n’est pas plus compliqué que d’utiliser DDEV, c’est simplement plus explicite : chaque service, chaque volume, chaque variable d’environnement est écrit noir sur blanc dans un fichier versionné avec le projet, sans magie cachée derrière une commande.

Les trois services nécessaires

Un environnement WordPress fonctionnel repose sur trois briques : un service PHP-FPM pour exécuter le code, un service MySQL pour la base de données, et un service nginx pour servir les requêtes HTTP et faire le lien avec PHP-FPM via FastCGI.

Le fichier docker-compose.yml complet

L'essentiel à retenir : Trois services suffisent : PHP, MySQL, nginx ; Contrôle total sur chaque paramètre ; Plus de configuration à maintenir qu'avec un outil packagé
version: '3.8'

services:
  php:
    image: wordpress:php8.0-fpm
    volumes:
      - ./wp-content:/var/www/html/wp-content
      - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_NAME: wordpress

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_ROOT_PASSWORD: motdepasse
    volumes:
      - db_data:/var/lib/mysql

  nginx:
    image: nginx:1.21-alpine
    ports:
      - "8080:80"
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
      - ./wp-content:/var/www/html/wp-content
    depends_on:
      - php

volumes:
  db_data:

La configuration nginx associée

C’est ce fichier qui échappe le plus souvent aux développeurs habitués à un outil packagé, alors qu’il détermine l’essentiel du comportement du serveur web :

server {
    listen 80;
    root /var/www/html;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }
}

Ajuster PHP finement

Le fichier uploads.ini monté dans le service PHP permet d’ajuster des paramètres que les outils packagés fixent parfois à des valeurs par défaut inadaptées à un projet spécifique (import de médias volumineux, temps d’exécution long pour une synchronisation) :

upload_max_filesize = 256M
post_max_size = 256M
max_execution_time = 300

Ce que cette approche apporte réellement

  • Aucune dépendance à un outil tiers dont l’évolution ou l’abandon échapperait au contrôle de l’équipe.
  • Une configuration nginx et PHP entièrement lisible et modifiable, utile pour reproduire fidèlement un comportement de production particulier.
  • Un fichier docker-compose.yml versionné qui documente lui-même l’infrastructure du projet, sans nécessiter de connaître les conventions internes d’un outil externe.

Le prix à payer

Cette maîtrise a un coût : chaque nouveau besoin (Redis pour un cache objet, Mailhog pour intercepter les e-mails de test, WP-CLI en conteneur séparé) demande d’ajouter et de configurer soi-même un service supplémentaire, alors qu’un outil comme DDEV ou Lando propose ces ajouts en une ligne de configuration ou une commande d’activation. Pour une équipe qui gère des dizaines de projets, maintenir un docker-compose.yml maison cohérent sur tous les projets demande une discipline de mise à jour que ces outils packagés assurent nativement.

On recommande cette approche à une équipe qui a déjà une bonne compréhension de Docker et des besoins d’infrastructure précis. Pour une équipe qui découvre Docker, un outil packagé reste un point de départ plus sûr.

En résumé

Construire son propre environnement Docker pour WordPress plutôt que de passer par DDEV ou Lando n’est pas un exercice de style : c’est un choix pertinent quand le projet a des besoins d’infrastructure spécifiques ou quand l’équipe veut garder un contrôle total sur chaque paramètre serveur. Ce n’est en revanche pas la voie la plus rapide pour démarrer, et elle demande un entretien continu que les outils packagés évitent par construction.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi