Découvrez comment déployer une ins­tal­la­tion de WordPress dans des con­te­neurs Docker, à la fois ma­nuel­le­ment et avec Docker Compose. Les dé­ve­lop­peurs WordPress trou­ve­ront utile de déployer WordPress dans des con­te­neurs Docker. En effet, Docker vous permet de faire des tests avec plusieurs con­fi­gu­ra­tions de WordPress et de lancer une nouvelle ins­tal­la­tion de WordPress avec quelques commandes simples.

Hé­ber­ge­ment pour Managed WordPress
Créez votre site avec l'IA, nous gérons le reste
  • Fonctions d'IA faciles à utiliser, quel que soit votre niveau de com­pé­tence
  • Nombreux thèmes et plugins pour une per­son­na­li­sa­tion complète
  • Mise à jour sans efforts et moins d'ad­mi­nis­tra­tion

Exigences

Pour que WordPress fonc­tionne sans problème dans les con­te­neurs Docker, vous devez disposer d’une dis­tri­bu­tion Linux récente et prise en charge. Les versions an­té­rieures telles que CentOS 7 ou Ubuntu 14.04 sont obsolètes et doivent être rem­pla­cées par des al­ter­na­tives modernes. Sont re­com­man­dé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 En­ter­prise 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 su­pé­rieure, afin de pouvoir bé­né­fi­cier des dernières amé­lio­ra­tions en matière de sécurité et de per­for­mance. Si vous souhaitez utiliser Docker Compose, assurez-vous d’utiliser au moins la version 2.x, car les versions an­té­rieures ne sont plus ac­ti­ve­ment main­te­nues.

Des con­nais­sances de base sur l’uti­li­sa­tion de la ligne de commande, sur Docker Compose et sur Docker en général sont utiles. Si vous prévoyez des con­fi­gu­ra­tions plus im­por­tantes ou évo­lu­tives, jetez un œil à Ku­ber­netes afin d’effectuer une or­ches­tra­tion de con­te­neurs de niveau pro­fes­sion­nel.

Exécution de WordPress dans des con­te­neurs Docker

Une ins­tal­la­tion 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’ins­tal­la­tion, qui sont ef­fec­tuées dans un na­vi­ga­teur

Pour les exemples suivants, les com­po­sants WordPress et MySQL/MariaDB sont exécutés dans des con­te­neurs 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 na­vi­ga­teur.

Exécuter un conteneur MySQL/MariaDB

Après avoir lancé Docker, la première étape consiste à con­fi­gu­rer 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 rem­pla­ce­ment 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
Note

Veillez à utiliser dans tous les cas un mot de passe sécurisé pour votre base de données. L’uti­li­sa­tion de variables d’en­vi­ron­ne­ment pour stocker les mots de passe est également une faille de sécurité po­ten­tielle. Il est pré­fé­rable d’utiliser un secret Docker ou un fichier de con­fi­gu­ra­tion 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 ins­tal­la­tion 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 main­te­nant une base de données :

CREATE Database wordpress-db;

Exécuter un conteneur WordPress

Exécutez désormais un conteneur à partir de l’image of­fi­cielle 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é­lec­tion­ner un autre port sur l’hôte.

La commande varie lé­gè­re­ment 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 nom­breuses autres variables d’en­vi­ron­ne­ment que vous pouvez ajouter à cette commande si vous souhaitez remplacer les pa­ra­mètres par défaut, parmi les­quelles :

  • -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’en­vi­ron­ne­ment 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 con­te­neurs 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 con­te­neurs sont mieux isolés des autres con­te­neurs, ce qui réduit le risque de con­nexions in­dé­si­rables. De plus, les règles réseau peuvent être con­fi­gu­rées de manière plus détaillée, par exemple avec des règles de pare-feu spé­ci­fiques ou l’uti­li­sa­tion d’un reverse proxy.

Terminer l’ins­tal­la­tion dans un na­vi­ga­teur

Pour les dernières étapes de l’ins­tal­la­tion, vous devez accéder au conteneur WordPress via un na­vi­ga­teur.

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 na­vi­ga­teur soit par l’adresse IP, soit par l’URL du serveur :

  • http://<server-ip>:8080
  • http://example.com:8080

Visitez l’URL dans un na­vi­ga­teur, choi­sis­sez votre langue d’ins­tal­la­tion, puis cliquez sur « Continue » (« Suivant »).

Image: Capture d’écran du choix de la langue WordPress
Vous pouvez main­te­nant choisir la langue d’ins­tal­la­tion dans votre na­vi­ga­teur.

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

Image: Capture d’écran du message d’installation de WordPress
Le message d’ins­tal­la­tion de WordPress vous informe de la prochaine étape de la con­fi­gu­ra­tion.

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

Image: Capture d’écran de la connexion à la base de données WordPress
Spécifiez les in­for­ma­tions demandées con­cer­nant votre base de données.

Notez que l’uti­li­sa­teur par défaut est « root », sauf spé­ci­fi­ca­tion 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’ins­tal­la­tion.

Image: Capture d’écran de l’installation de WordPress : informations sur le site
Four­nis­sez les in­for­ma­tions demandées sur votre site WordPress.
  • Nom du site Web : rem­plis­sez le nom de votre site Web.
  • Nom d’uti­li­sa­teur : il s’agit du nom d’uti­li­sa­teur admin le plus important pour votre site Web. Remarque : pour des raisons de sécurité, nous vous re­com­man­dons 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’uti­li­sa­teur admin principal.

Cliquez ensuite sur le bouton « Install WordPress » pour terminer l’ins­tal­la­tion.

Image: Capture d’écran de l’installation réussie de WordPress
Le message indique que l’ins­tal­la­tion a réussi.

Une fois l’ins­tal­la­tion réussie, vous recevrez un message de succès et pourrez ensuite vous connecter à WordPress.

Exécuter WordPress avec Docker Compose

L’uti­li­sa­tion de Docker Compose pour exécuter WordPress est aussi une pos­si­bi­lité. Pour plus d’in­for­ma­tions sur l’ins­tal­la­tion et l’uti­li­sa­tion de Docker Compose, consultez notre article dédié à l’or­ches­tra­tion Docker avec Swarm et Compose. Fon­da­men­ta­le­ment, 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é­per­toire 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è­re­ment 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

En­re­gis­trez 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

En­re­gis­trez et quittez le fichier.

Démarrer les con­te­neurs

Utilisez main­te­nant Docker Compose pour démarrer ces con­te­neurs avec la commande suivante :

sudo docker compose up -d

La commande qui suit vous permet de vérifier que les con­te­neurs ont bien été créés :

sudo docker compose ps

Pour terminer l’ins­tal­la­tion, visitez le conteneur WordPress dans un na­vi­ga­teur. Pour cela, utilisez soit l’adresse IP, soit l’URL du serveur :

  • http://192.168.0.1:8080
  • http://example.com:8080

Utiliser Ku­ber­netes pour des dé­ploie­ments WordPress évolutifs

Pour les dé­ploie­ments plus im­por­tants et pro­duc­tifs, vous pouvez utiliser Ku­ber­netes (K8s). Ku­ber­netes permet d’or­ches­trer des con­te­neurs WordPress sur plusieurs nœuds et de les gérer au­to­ma­ti­que­ment. L’uti­li­sa­tion d’un cluster Ku­ber­netes offre un certain nombre d’avantages tels que la mise à l’échelle au­to­ma­tique, les mé­ca­nismes de self-healing et la gestion cen­tra­li­sée des res­sources. Une im­plé­men­ta­tion peut être réalisée par exemple avec Helm, un ges­tion­naire de paquets pour Ku­ber­netes :

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é­ploie­ment WordPress résilient et évolutif avec load balancing, des mises à jour au­to­ma­tiques et une prise en charge du failover.

New call-to-action
Aller au menu principal