Déployer WordPress dans des conteneurs Docker
Découvrez comment déployer une installation de WordPress dans des conteneurs Docker, à la fois manuellement et avec Docker Compose. Les développeurs WordPress trouveront utile de déployer WordPress dans des conteneurs Docker. En effet, Docker vous permet de faire des tests avec plusieurs configurations de WordPress et de lancer une nouvelle installation de WordPress avec quelques commandes simples.
- Création et personnalisation de votre site assistées par IA
- 3x plus rapide : SSD, mise en cache et plus
- Analyses de sécurité quotidiennes, protection DDoS et disponibilité de 99,98 %
Exigences
Pour que WordPress fonctionne sans problème dans les conteneurs Docker, vous devez disposer d’une distribution Linux récente et prise en charge. Les versions antérieures telles que CentOS 7 ou Ubuntu 14.04 sont obsolètes et doivent être remplacées par des alternatives modernes. Sont recommandées :
- Ubuntu 22.04 LTS ou une version plus récente.
- Debian 12 ou version plus récente.
- Une version récente de Red Hat Enterprise Linux (RHEL) ou AlmaLinux.
De plus, Docker doit être installé et prêt à l’usage. La version minimum requise de Docker est la version 20.10 ou supérieure, afin de pouvoir bénéficier des dernières améliorations en matière de sécurité et de performance. Si vous souhaitez utiliser Docker Compose, assurez-vous d’utiliser au moins la version 2.x, car les versions antérieures ne sont plus activement maintenues.
Des connaissances de base sur l’utilisation de la ligne de commande, sur Docker Compose et sur Docker en général sont utiles. Si vous prévoyez des configurations plus importantes ou évolutives, jetez un œil à Kubernetes afin d’effectuer une orchestration de conteneurs de niveau professionnel.
Exécution de WordPress dans des conteneurs Docker
Une installation réussie de WordPress se compose de trois éléments :
- Le logiciel WordPress
- Une base de données MySQL ou MariaDB
- Les dernières étapes de l’installation, qui sont effectuées dans un navigateur
Pour les exemples suivants, les composants WordPress et MySQL/MariaDB sont exécutés dans des conteneurs liés distincts. Le conteneur sur lequel s’exécute le logiciel WordPress est associé à un port sur l’hôte afin que vous puissiez y accéder dans un navigateur.
Exécuter un conteneur MySQL/MariaDB
Après avoir lancé Docker, la première étape consiste à configurer la base de données. Pour cela, commencez par exécuter un conteneur appelé my-db. Vous pouvez utiliser MySQL ou MariaDB, qui est un remplacement de MySQL par drop-in.
MySQL
Démarrez un conteneur avec la commande :
sudo docker run --name my-db -e MYSQL_ROOT_PASSWORD=MOTDEPASSE_SECURISE -d mysql:latest
MariaDB
Démarrez un conteneur avec la commande :
sudo docker run --name my-db -e MYSQL_ROOT_PASSWORD=MOTDEPASSE_SECURISE -d mariadb:latest
Veillez à utiliser dans tous les cas un mot de passe sécurisé pour votre base de données. L’utilisation de variables d’environnement pour stocker les mots de passe est également une faille de sécurité potentielle. Il est préférable d’utiliser un secret Docker ou un fichier de configuration sécurisé à la place.
Créer une base de données
Après avoir créé votre conteneur, vous devez créer la base de données que vous souhaitez utiliser pour votre installation WordPress.
MySQL
Connectez-vous à votre conteneur de base de données que vous venez de créer à l’aide de la commande suivante :
docker exec -it my-db mysql -u root -p
Créez ensuite une base de données :
CREATE DATABASEversion: '3'
services:
wordpress:
image: wordpress:latest
links:
- wordpress_db:mysql
ports:
- 8080:80
wordpress_db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: MOTDEPASSE_SECURISE wordpress-db;
MariaDB
Connectez-vous au conteneur de base de données que vous venez de créer à l’aide de la commande suivante :
docker exec -it my-db mariadb -u root -p
Créez maintenant une base de données :
CREATE Database wordpress-db;
Exécuter un conteneur WordPress
Exécutez désormais un conteneur à partir de l’image officielle de WordPress, qui sera mappé sur le port hôte 8080 et associé au conteneur de la base de données.
Prenez en compte les éléments suivants :
- Si vous avez un pare-feu, vous devrez peut-être ajouter l’accès au port 8080.
- Si vous avez déjà exécuté un autre service sur le port 8080, vous pouvez sélectionner un autre port sur l’hôte.
La commande varie légèrement selon que vous utilisez MySQL ou MariaDB :
MySQL
Démarrez un conteneur WordPress avec la commande suivante :
sudo docker run --name my-wordpress -p 8080:80 --link my-db:mysql -d wordpress:latest
MariaDB
Démarrez un conteneur WordPress avec la commande :
sudo docker run --name my-wordpress -p 8080:80 --link my-db:mariadb -d wordpress:latest
Il existe de nombreuses autres variables d’environnement que vous pouvez ajouter à cette commande si vous souhaitez remplacer les paramètres par défaut, parmi lesquelles :
-e WORDPRESS_DB_HOST=[hostname]
: la valeur par défaut est l’adresse IP et le port du conteneur MySQL/MariaDB lié. Cette variable vous permet d’accéder à une base de données MySQL/MariaDB sur un autre serveur.-e WORDPRESS_DB_USER=[nom d’utilisateur]
: la valeur par défaut est root.-e WORDPRESS_DB_PASSWORD=[mot de passe]
: la valeur par défaut est la variable d’environnement MYSQL_ROOT_PASSWORD du conteneur MySQL/MariaDB lié.-e WORDPRESS_DB_NAME=[nom]
: la valeur par défaut est « wordpress ».
Pour une sécurité accrue, il peut être utile de ne pas exécuter les conteneurs sur le réseau bridge par défaut. Vous pouvez utiliser votre propre réseau à la place :
docker network create my-wp-network
docker run --name my-db --network my-wp-network -e MYSQL_ROOT_PASSWORD=MOTDEPASSE_SECURISE -d mysql:latest
docker run --name my-wordpress --network my-wp-network -p 8080:80 -d wordpress:latest
Ici, vos conteneurs sont mieux isolés des autres conteneurs, ce qui réduit le risque de connexions indésirables. De plus, les règles réseau peuvent être configurées de manière plus détaillée, par exemple avec des règles de pare-feu spécifiques ou l’utilisation d’un reverse proxy.
Terminer l’installation dans un navigateur
Pour les dernières étapes de l’installation, vous devez accéder au conteneur WordPress via un navigateur.
Dans l’exemple précédent, nous avons mappé le port 8080 sur l’hôte vers le port 80 (services Web) sur le conteneur. De cette façon, vous pouvez accéder au conteneur dans un navigateur soit par l’adresse IP, soit par l’URL du serveur :
http://<server-ip>:8080
http://example.com:8080
Visitez l’URL dans un navigateur, choisissez votre langue d’installation, puis cliquez sur « Continue » (« Suivant »).

Sur la page suivante, vous recevrez un message qui vous préparera à la suite de l’installation. Cliquez sur le bouton « Let’s go! » pour continuer.

Vous devez maintenant indiquer votre base de données afin que le fichier wp-config.php
puisse être créé :

Notez que l’utilisateur par défaut est « root », sauf spécification contraire. Indiquez ici le nom de la base de données que vous avez créée ainsi que le mot de passe choisi. Un clic sur « Submit » (« Soumettre ») vous guidera tout au long du processus d’installation.

- Nom du site Web : remplissez le nom de votre site Web.
- Nom d’utilisateur : il s’agit du nom d’utilisateur admin le plus important pour votre site Web. Remarque : pour des raisons de sécurité, nous vous recommandons de ne pas utiliser « Admin » ou le nom/URL de votre site Web.
- Mot de passe : notez ce mot de passe dans un endroit sécurisé avant de continuer.
- Email : il s’agit de l’adresse email de l’utilisateur admin principal.
Cliquez ensuite sur le bouton « Install WordPress » pour terminer l’installation.

Une fois l’installation réussie, vous recevrez un message de succès et pourrez ensuite vous connecter à WordPress.
Exécuter WordPress avec Docker Compose
L’utilisation de Docker Compose pour exécuter WordPress est aussi une possibilité. Pour plus d’informations sur l’installation et l’utilisation de Docker Compose, consultez notre article dédié à l’orchestration Docker avec Swarm et Compose. Fondamentalement, l’outil vous permet de définir tous les services dont vous avez besoin dans un seul fichier et de les lancer ensemble.
Créer un fichier YAML
Créez tout d’abord un répertoire pour votre projet et accédez-y :
sudo mkdir wordpress
cd wordpress
Créez un fichier YAML appelé docker-compose.yml avec la commande :
sudo nano docker-compose.yml
Le contenu du fichier varie légèrement selon que vous utilisez MySQL ou MariaDB :
MySQL
Ajoutez ce qui suit dans le fichier :
wordpress:
image: wordpress:latest
links:
- wordpress_db:mysql
ports:
- 8080:80
wordpress_db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: MOTDEPASSE_SECURISE
Enregistrez et quittez le fichier.
MariaDB
Ajoutez ce qui suit dans le fichier :
wordpress:
image: wordpress:latest
links:
- wordpress_db:mariadb
ports:
- 8080:80
wordpress_db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: MOTDEPASSE_SECURISE
Enregistrez et quittez le fichier.
Démarrer les conteneurs
Utilisez maintenant Docker Compose pour démarrer ces conteneurs avec la commande suivante :
sudo docker compose up -d
La commande qui suit vous permet de vérifier que les conteneurs ont bien été créés :
sudo docker compose ps
Pour terminer l’installation, visitez le conteneur WordPress dans un navigateur. Pour cela, utilisez soit l’adresse IP, soit l’URL du serveur :
http://192.168.0.1:8080
http://example.com:8080
Utiliser Kubernetes pour des déploiements WordPress évolutifs
Pour les déploiements plus importants et productifs, vous pouvez utiliser Kubernetes (K8s). Kubernetes permet d’orchestrer des conteneurs WordPress sur plusieurs nœuds et de les gérer automatiquement. L’utilisation d’un cluster Kubernetes offre un certain nombre d’avantages tels que la mise à l’échelle automatique, les mécanismes de self-healing et la gestion centralisée des ressources. Une implémentation peut être réalisée par exemple avec Helm, un gestionnaire de paquets pour Kubernetes :
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-wordpress bitnami/wordpress --set service.type=LoadBalancer
Cela permet d’assurer un déploiement WordPress résilient et évolutif avec load balancing, des mises à jour automatiques et une prise en charge du failover.