WordPress Installation · 14 min read · Sep 10, 2025

Comment installer WordPress avec Docker Compose

WordPress CMS (Système de Gestion de Contenu) est une plateforme open-source largement utilisée qui permet aux utilisateurs de créer, gérer et publier du contenu numérique, principalement pour des sites web et des blogs. Initialement publié en 2003, WordPress est devenu le CMS le plus populaire au monde, alimentant plus de 40 % de tous les sites web sur Internet. Il offre une interface conviviale qui permet aux personnes ayant peu ou pas d’expérience en codage de créer et de maintenir des sites web de qualité professionnelle. WordPress est hautement personnalisable, avec des milliers de thèmes et de plugins disponibles pour étendre sa fonctionnalité, répondant à un large éventail de besoins allant des blogs simples aux sites de commerce électronique complexes. Son fort soutien communautaire, ses mises à jour régulières et sa documentation exhaustive en font un choix fiable et polyvalent tant pour les débutants que pour les développeurs expérimentés.

Docker est une plateforme open-source conçue pour automatiser le déploiement, la mise à l’échelle et la gestion des applications au sein de conteneurs légers et portables. Introduit en 2013, Docker a révolutionné le développement logiciel en fournissant un environnement cohérent pour que les applications s’exécutent, peu importe où elles sont déployées, que ce soit sur la machine locale d’un développeur, dans des centres de données sur site ou dans le cloud. Les conteneurs regroupent une application avec toutes ses dépendances, bibliothèques et fichiers de configuration, garantissant des performances cohérentes à travers différents environnements. Cette containerisation simplifie le flux de travail de développement, améliore la collaboration et augmente l’efficacité en permettant aux développeurs de créer, partager et exécuter des applications sans heurts. L’écosystème de Docker comprend des outils et des services pour l’orchestration de conteneurs, tels que Docker Swarm et Kubernetes, qui facilitent la gestion des déploiements de conteneurs à grande échelle, faisant de Docker une technologie clé dans les pratiques DevOps modernes.

Ce tutoriel vous apprendra comment installer WordPress en utilisant Docker/Docker Compose. Avec Docker, le processus d’installation de la pile préférée devient beaucoup plus facile. Vous pouvez utiliser la même configuration pour installer WordPress rapidement sur plusieurs serveurs. Nous installerons également l’outil phpMyAdmin pour gérer les bases de données ainsi que le serveur proxy Nginx pour servir le site via SSL.

Prérequis

  • Un serveur Linux avec un utilisateur non-root ayant des privilèges sudo. Nous utilisons un serveur exécutant Ubuntu 24.04 pour notre tutoriel.
  • Un nom de domaine entièrement qualifié (FQDN) pointant vers votre serveur. Pour nos besoins, nous utiliserons example.com comme nom de domaine pour le site WordPress et phpmyadmin.example.com pour le site phpMyAdmin.
  • Assurez-vous que tout est à jour. $ sudo apt update
  • Installez des paquets utilitaires de base. Certains d’entre eux peuvent déjà être installés. $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y

Étape 1 - Configurer le Pare-feu

La première étape consiste à configurer le pare-feu. Ubuntu est livré avec ufw (Uncomplicated Firewall) par défaut.

Vérifiez si le pare-feu est en cours d’exécution.

$ sudo ufw status

Vous devriez obtenir la sortie suivante.

Status: inactive

Autorisez le port SSH afin que le pare-feu ne rompe pas la connexion actuelle lors de son activation.

$ sudo ufw allow OpenSSH

Autorisez également les ports HTTP et HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Activez le pare-feu

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Vérifiez à nouveau l’état du pare-feu.

$ sudo ufw status

Vous devriez voir une sortie similaire.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Étape 2 - Installer Docker et Docker Compose

Ubuntu 22.04 est livré avec une version plus ancienne de Docker. Pour installer la dernière version, importez d’abord la clé GPG de Docker.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Créez un fichier de dépôt Docker.

$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Mettez à jour la liste des dépôts du système.

$ sudo apt update

Installez la dernière version de Docker.

$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Vérifiez qu’il fonctionne.

$ sudo systemctl status docker
? docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-07-19 17:11:19 UTC; 3s ago
TriggeredBy: ? docker.socket
       Docs: https://docs.docker.com
   Main PID: 1163 (dockerd)
      Tasks: 7
     Memory: 21.9M
        CPU: 221ms
     CGroup: /system.slice/docker.service
             ??2803 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Par défaut, Docker nécessite des privilèges root. Si vous souhaitez éviter d’utiliser sudo chaque fois que vous exécutez la commande docker, ajoutez votre nom d’utilisateur au groupe docker.

$ sudo usermod -aG docker $(whoami)

Vous devrez vous déconnecter du serveur et vous reconnecter en tant que même utilisateur pour activer ce changement ou utiliser la commande suivante.

$ su - ${USER}

Confirmez que votre utilisateur est ajouté au groupe Docker.

$ groups
navjot wheel docker

Étape 3 - Créer un Fichier Docker Compose pour WordPress

Je vais faire toute l’installation de Docker WordPress dans /opt. Vous pouvez choisir un autre emplacement comme /var ou /home selon vos besoins.

cd /opt

Créez un répertoire pour la configuration de WordPress.

$ mkdir wordpress

Passez au répertoire.

$ cd wordpress

Créez et ouvrez le fichier Docker compose pour l’édition.

$ nano docker-compose.yml

Collez le code suivant dedans.

services:
  wp:
    image: wordpress:latest
    container_name: wordpress-app
    restart: unless-stopped
    expose:
      - 8080
    volumes:
      - ./config/php.conf.ini:/usr/local/etc/php/conf.d/conf.ini
      - ./wp-app:/var/www/html
      #- ./plugin-name/trunk/:/var/www/html/wp-content/plugins/plugin-name # Développement de plugin
      #- ./theme-name/trunk/:/var/www/html/wp-content/themes/theme-name # Développement de thème
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_NAME: "${DB_NAME}"
      WORDPRESS_DB_USER: "${DB_USER_NAME}"
      WORDPRESS_DB_PASSWORD: "${DB_USER_PASSWORD}"
      VIRTUAL_HOST: example.com
      LETSENCRYPT_HOST: example.com
    depends_on:
      - db
    links:
      - db

  wpcli:
    image: wordpress:cli
    container_name: wpcli_app
    volumes:
      - ./config/php.conf.ini:/usr/local/etc/php/conf.d/conf.ini
      - ./wp-app:/var/www/html
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_NAME: "${DB_NAME}"
      WORDPRESS_DB_USER: "${DB_USER_NAME}"
      WORDPRESS_DB_PASSWORD: "${DB_USER_PASSWORD}"
    depends_on:
      - db
      - wp

  pma:
    image: phpmyadmin/phpmyadmin
    container_name: pma
    restart: unless-stopped
    environment:
      # https://docs.phpmyadmin.net/en/latest/setup.html#docker-environment-variables
      PMA_HOST: db
      PMA_PORT: 3306
      MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
      UPLOAD_LIMIT: 50M
      VIRTUAL_HOST: phpmyadmin.example.com
      LETSENCRYPT_HOST: phpmyadmin.example.com
    expose:
      - 8081
    links:
      - db:db

  db:
    image: mysql:latest
    container_name: wordpressdb
    restart: unless-stopped
    command: [
        '--default_authentication_plugin=mysql_native_password',
        '--character-set-server=utf8mb4',
        '--collation-server=utf8mb4_unicode_ci'
    ]
    volumes:
      - ./wp-data:/docker-entrypoint-initdb.d
      - db_data:/var/lib/mysql
    environment:
      MYSQL_DATABASE: "${DB_NAME}"
      MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
      MYSQL_USER: "${DB_USER_NAME}"
      MYSQL_PASSWORD: "${DB_USER_PASSWORD}"

volumes:
  db_data:

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Il y a deux images WordPress que nous tirons. L’une est pour le site web et l’autre est pour l’outil WP-CLI. Les deux images dépendent de l’image Docker MySQL 8.0. Ici, nous définissons les variables d’environnement pour les identifiants de la base de données. Nous avons créé deux volumes pour les deux conteneurs, l’un pointant vers les fichiers publics pour le site WordPress et l’autre pointant vers l’emplacement PHP.ini personnalisé. Nous avons également défini les variables d’environnement pour le domaine de l’hôte virtuel Nginx et le domaine SSL Let’s encrypt pour le site WordPress.

Vous pouvez ajouter plus de variables d’environnement et ajouter des données personnalisées wp-config.php au fichier Docker. Vous pouvez en apprendre davantage sur les variables d’environnement supplémentaires sur la page DockerHub de WordPress.

L’image suivante est pour phpMyAdmin qui dépend de la même image MySQL et s’y connecte en utilisant le mot de passe root. Il a une limite de téléchargement de 50 Mo. Vous pouvez le changer selon vos besoins et la taille de votre base de données. Comme pour le site WordPress, nous avons défini le domaine de l’hôte virtuel Nginx et le nom de domaine SSL Let’s encrypt pour le site phpMyAdmin.

La dernière image est pour la base de données MySQL. Nous avons passé quelques commandes pour définir la méthode d’authentification par défaut et le jeu de caractères. Nous avons également créé quelques volumes pour stocker les données et configuré des variables d’environnement pour les identifiants de la base de données.

L’étape suivante consiste à créer le fichier d’environnement pour les variables utilisées dans le fichier compose. Créez et ouvrez le fichier d’environnement pour l’édition.

$ sudo nano .env

Collez le code suivant dedans.

DB_NAME=wordpress
DB_USER_NAME=username
DB_USER_PASSWORD=userpassword
DB_ROOT_PASSWORD=password

Vous pouvez enregistrer le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité. Remplacez les variables par le nom d’utilisateur et le mot de passe de votre choix.

Vous pouvez personnaliser la configuration PHP en utilisant un fichier php.ini personnalisé.

Créez un dossier pour la configuration PHP.

$ mkdir config

Créez et ouvrez le fichier php.conf.ini pour l’édition.

$ nano config/php.conf.ini

Collez le code suivant dedans. Ajustez les valeurs selon vos besoins. La limite de téléchargement pour le conteneur PhpMyadmin est indépendante des valeurs que vous utilisez dans ce fichier.

file_uploads = On
memory_limit = 500M
upload_max_filesize = 30M
post_max_size = 30M
max_execution_time = 600

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Étape 4 - Mettre à jour Docker Compose pour Nginx

Créez le répertoire pour la configuration Nginx.

$ mkdir nginx

Créez un répertoire pour les hôtes virtuels à l’intérieur de ce répertoire.

$ mkdir nginx/vhost

Créez et ouvrez le fichier nginx/vhost/wordpress.example.com pour l’édition.

$ nano nginx/vhost/wordpress.example.com

Collez le code suivant dedans.

server_tokens off;
client_max_body_size 30m;

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Faites de même pour le fichier nginx/vhost/phpmyadmin.example.com.

$ nano nginx/vhost/phpmyadmin.example.com

Collez le code suivant dedans.

server_tokens off;
client_max_body_size 50m;

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Ouvrez à nouveau le fichier docker compose.

$ nano docker-compose.yml

Collez le code suivant avant la ligne volumes: db_data:.

  nginx:
    container_name: nginx
    image: nginxproxy/nginx-proxy
    restart: unless-stopped
    ports:
        - 80:80
        - 443:443
    volumes:
        - /var/run/docker.sock:/tmp/docker.sock:ro
        - ./nginx/html:/usr/share/nginx/html
        - ./nginx/certs:/etc/nginx/certs
        - ./nginx/vhost:/etc/nginx/vhost.d
    logging:
        options:
            max-size: "10m"
            max-file: "3"

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Dans le code ci-dessus, nous tirons l’image Docker du proxy Nginx et exposons les ports 80 et 443 au conteneur hôte, qui seront utilisés pour se connecter au monde extérieur. Nous avons également créé des volumes pour la page HTML de Nginx, un répertoire où tous les certificats SSL seront stockés, et le répertoire pour les hôtes virtuels, que nous avons utilisé ci-dessus pour ajouter une configuration Nginx supplémentaire. Nous avons configuré la taille de téléchargement de fichier pour les sites WordPress et phpMyAdmin. Le nom de domaine du site est récupéré à partir des variables d’environnement que nous avons définies à l’étape précédente.

Étape 5 - Mettre à jour Docker Compose pour SSL

Ouvrez le fichier docker compose pour l’édition.

$ nano docker-compose.yml

Collez le code suivant avant la ligne volumes: db_data:.

  acme-companion:
    container_name: acme-companion
    image: nginxproxy/acme-companion
    restart: unless-stopped
    volumes_from:
        - nginx
    volumes:
        - /var/run/docker.sock:/var/run/docker.sock
        - ./nginx/acme:/etc/acme.sh
    environment:
        DEFAULT_EMAIL: [email protected]

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Ici, nous tirons l’image Docker Acme companion, qui fonctionne avec le proxy Nginx. Elle tire les volumes du conteneur Nginx. Nous définissons également un volume pour le acme.sh outil, qui stocke toute la configuration concernant SSL Let’s Encrypt. Enfin, nous définissons une variable d’environnement pour enregistrer le certificat SSL auprès de Let’s Encrypt.

Étape 6 - Démarrer et Installer WordPress

Maintenant que tous nos fichiers de configuration sont complets, il est temps de démarrer et de lancer les conteneurs.

$ docker compose up -d

Attendez quelques minutes et vérifiez l’état des conteneurs.

$ docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS          PORTS                                                                      NAMES
c1e8a9b5169d   nginxproxy/acme-companion   "/bin/bash /app/entr…"   14 seconds ago   Up 7 seconds                                                                               acme-companion
8a37c78ff790   wordpress:latest            "docker-entrypoint.s…"   14 seconds ago   Up 7 seconds    80/tcp, 8080/tcp                                                           wordpress-app
4f9c777c97c2   phpmyadmin/phpmyadmin       "/docker-entrypoint.…"   14 seconds ago   Up 7 seconds    80/tcp, 8081/tcp                                                           pma
1b1dede46b07   nginxproxy/nginx-proxy      "/app/docker-entrypo…"   14 seconds ago   Up 11 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   nginx
b9cf64a2f4a3   mysql:latest                "docker-entrypoint.s…"   14 seconds ago   Up 11 seconds   3306/tcp, 33060/tcp                                                        wordpressdb

Ouvrez l’URL https://example.com pour commencer l’installateur WordPress.

Sélection de la langue de l'installateur WordPress

Sélectionnez votre langue et cliquez sur le bouton Continuer pour passer à la page suivante.

Détails du site de l'installateur WordPress

Remplissez les détails du site, choisissez votre nom d’utilisateur, mot de passe et adresse e-mail, puis cliquez sur le bouton Installer WordPress pour commencer l’installation.

Succès de l'installation de WordPress

Vous serez dirigé vers la page de succès de l’installation. Cliquez sur le bouton Se connecter pour accéder à la page de connexion.

Page de connexion WordPress

Entrez vos identifiants de connexion et cliquez sur le bouton Se connecter pour ouvrir le tableau de bord WordPress.

Tableau de bord WordPress

Vous pouvez commencer à utiliser WordPress maintenant.

Étape 7 - Accéder à PhpMyAdmin

Vous pouvez accéder à phpMyAdmin via l’URL https://phpmyadmin.example.com.

Page de connexion phpMyAdmin

Entrez root comme nom d’utilisateur et le mot de passe root, puis cliquez sur Se connecter pour ouvrir le tableau de bord.

Tableau de bord phpMyAdmin

Vous pouvez commencer à utiliser phpMyAdmin maintenant.

Étape 8 - Accéder à WP-CLI

Vous pouvez accéder à WP-CLI en utilisant la commande suivante.

$ docker compose run --rm wpcli cli version

Vous obtiendrez la sortie suivante.

[+] Running 2/0
 ? Container wordpressdb    Running                                                                                0.0s
 ? Container wordpress-app  Running                                                                                0.0s
WP-CLI 2.7.1

Pour éviter de taper une commande aussi longue chaque fois, nous pouvons utiliser la fonctionnalité d’alias de Linux.

$ alias wp="docker compose -f ~/wordpress/docker-compose.yml run --rm wpcli"

Vous pouvez maintenant taper la commande suivante de n’importe où dans votre conteneur.

$ wp cli version

Les alias dans Linux sont temporaires. Pour rendre l’alias permanent, vous devez éditer le fichier ~/.bashrc. Ouvrez-le pour l’édition.

$ nano ~/.bashrc

Collez la ligne suivante à la fin du fichier.

# Aliases personnalisés
alias wp="docker compose -f ~/wordpress/docker-compose.yml run --rm wpcli"

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Sourcez le fichier pour recharger la configuration.

$ source ~/.bashrc

Vous pouvez commencer à utiliser WP-CLI.

Étape 9 - Sauvegarder WordPress

Il existe plusieurs façons de sauvegarder WordPress. Le moyen le plus simple est d’utiliser un plugin. Il existe plusieurs plugins disponibles pour cela. Vous pouvez également utiliser phpMyAdmin pour créer une sauvegarde.

Vous pouvez également utiliser la ligne de commande pour sauvegarder la base de données WordPress. Passez au répertoire WordPress.

$ cd ~/wordpress

Utilisez la commande suivante pour sauvegarder la base de données WordPress. On vous demandera votre mot de passe root MySQL.

$ docker compose exec db sh -c "exec mysqldump wordpress -uroot -p" | sudo tee wp-data/data_`date +%d-%m-%Y"_"%H_%M_%S`.sql >/dev/null
Enter password: password

La commande ci-dessus créera la sauvegarde SQL dans le répertoire ~/wordpress/wp-data.

Vérifiez le contenu du répertoire.

$ ls -al wp-data
total 908
drwxr-xr-x 2 root   root     4096 Jan 11 10:15 ./
drwxrwxr-x 6 navjot navjot   4096 Jan 11 10:05 ../
-rw-r--r-- 1 root   root   919814 Jan 11 10:14 data_11-01-2023_10_14_40.sql

Vous pouvez voir la base de données sauvegardée dans le répertoire. Vous pouvez restaurer cette base de données en utilisant l’outil phpMyAdmin ou en utilisant la commande suivante.

$ docker compose exec db sh -c "exec mysql -uroot -p" < wp-data/data_11-01-2023_10_14_40.sql

Vous pouvez créer un cron job pour sauvegarder la base de données régulièrement.

Créez le script de sauvegarde dans le répertoire /etc/cron.daily et ouvrez-le pour l’édition.

$ sudo nano /etc/cron.daily/wpbackup.sh

Collez le code suivant dedans.

#!/bin/bash
docker compose exec db sh -c "exec mysqldump wordpress -uroot -p" | tee wp-data/data_`date +%d-%m-%Y"_"%H_%M_%S`.sql >/dev/null

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Rendez le script exécutable.

$ sudo chmod +x /etc/cron.daily/wpbackup.sh

Maintenant, votre base de données sera sauvegardée quotidiennement.

Étape 10 - Mettre à jour WordPress

Le moyen le plus simple de mettre à jour WordPress est d’utiliser l’outil de mise à jour intégré. Vous pouvez également le mettre à jour en utilisant Docker. La première étape consiste à sauvegarder la base de données WordPress en utilisant la commande de l’étape 9.

Ensuite, passez au répertoire.

$ cd ~/wordpress

Arrêtez les conteneurs.

$ docker compose down --remove-orphans

Tirez les dernières images de conteneur.

$ docker compose pull

Apportez les modifications nécessaires dans le docker-compose.yml si vous le souhaitez.

Redémarrez les conteneurs WordPress.

$ docker compose up -d

Conclusion

Cela conclut notre tutoriel sur l’installation de WordPress en utilisant Docker Compose, phpMyAdmin et WP-CLI. Si vous avez des questions, postez-les dans les commentaires ci-dessous.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.