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.comcomme nom de domaine pour le site WordPress etphpmyadmin.example.compour 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 /optCréez un répertoire pour la configuration de WordPress.
$ mkdir wordpressPassez au répertoire.
$ cd wordpressCréez et ouvrez le fichier Docker compose pour l’édition.
$ nano docker-compose.ymlCollez 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électionnez votre langue et cliquez sur le bouton Continuer pour passer à la page suivante.

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.

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.

Entrez vos identifiants de connexion et cliquez sur le bouton Se connecter pour ouvrir le 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.

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

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.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.