Comment déployer rapidement WordPress en tant que conteneur Docker –
WordPress est le système de gestion de contenu le plus populaire. Il est écrit en PHP, stocke les données dans une base de données MySQL et s’exécute généralement derrière un serveur Web Apache. Ces dépendances ajoutent plusieurs packages à votre système et peuvent être difficiles à maintenir au fil du temps. Voici comment lancer rapidement une installation WordPress conteneurisée à l’aide de l’image Docker officielle.
Sommaire
Commencer
L’exécution de WordPress dans Docker nécessite deux conteneurs distincts : un conteneur Web, exécutant Apache et PHP, et un conteneur de base de données, hébergeant MySQL. Vous devez également configurer les volumes Docker pour les répertoires de données WordPress. Ceux-ci stockent vos fichiers de configuration et les médias téléchargés afin qu’ils persistent lors des redémarrages du conteneur.
Assurez-vous que Docker et Docker Compose sont installés avant de continuer. Bien que vous puissiez utiliser la CLI Docker seule, Compose facilite la définition des deux services, de leurs dépendances et de vos volumes. Vous pourrez afficher toute la pile avec une seule commande.
Images de base
L’image officielle de WordPress Docker est disponible dans de nombreuses saveurs étiquetées différentes. Ceux-ci couvrent le spectre des versions WordPress et PHP disponibles. Si vous utilisez le latest
tag, vous obtiendrez la version actuelle de WordPress avec la dernière version de PHP.
Pour plus de contrôle sur votre déploiement, utilisez une version WordPress et PHP spécifique. Voici quelques exemples:
wordpress:5.7
– WordPress 5.7 avec le dernier PHP.wordpress:php7.4
– PHP 7.4 avec le dernier WordPress.wordpress:5.7-php7.4
– WordPress 5.7 avec PHP 5.4.
Une liste exhaustive des balises prises en charge est proposée sur Docker Hub. Outre la prise en charge de l’épinglage de version, des variantes d’image sont également disponibles pour Apache, FPM et Alpine.
Les images sont préconfigurées avec des paramètres par défaut utilisables. Vous pouvez ajouter le vôtre php.ini
paramètres en copiant un fichier compatible dans le $PHP_INI_DIR/conf.d
répertoire dans le conteneur WordPress.
Déploiement de votre pile
Créez un nouveau répertoire pour votre site, puis ajoutez un docker-compose.yml
fichier. Collez le contenu suivant :
version: "3" services: wordpress: image: wordpress:5.7-php7.4 restart: unless-stopped ports: - 80 environment: WORDPRESS_DB_HOST: mysql WORDPRESS_DB_USER: username WORDPRESS_DB_PASSWORD: password WORDPRESS_DB_NAME: wordpress volumes: - wordpress:/var/www/html mysql: image: mysql:5.7 restart: unless-stopped environment: MYSQL_DATABASE: wordpress MYSQL_USER: username MYSQL_PASSWORD: password MYSQL_RANDOM_ROOT_PASSWORD: "1" volumes: - mysql:/var/lib/mysql volumes: wordpress: mysql:
Ce fichier Compose définit une pile minimale avec les services WordPress et MySQL requis. La connexion à la base de données est configurée à l’aide de variables d’environnement. Vous devez modifier le nom d’utilisateur et le mot de passe de la base de données pour sécuriser vos propres valeurs. N’oubliez pas d’appliquer les modifications aux deux définitions de service.
Les services sont configurés pour redémarrer automatiquement à moins qu’ils n’aient été arrêtés manuellement. Cela garantit que votre site revient automatiquement lorsque vous redémarrez le système hôte.
L’ensemble du répertoire d’installation de WordPress est monté dans un volume. L’utilisation de cette approche garantit que tout votre contenu WordPress est conservé en dehors du conteneur, y compris la configuration, les thèmes, les plugins et les téléchargements. Il vous permet également d’utiliser l’auto-mise à jour WordPress à partir du panneau d’administration. Si vous n’avez monté que les répertoires de données dans un volume, toutes les modifications de source appliquées par l’auto-mise à jour seraient perdues après un redémarrage du conteneur.
Déployez la pile en exécutant docker-compose up -d
. Vous pourrez vous connecter à WordPress en visitant http://localhost
dans votre navigateur. Si vous voyez un message « Erreur lors de l’établissement de la connexion à la base de données », attendez quelques instants avant de réessayer. Le provisionnement de la base de données à la première exécution peut prendre plusieurs secondes.
Cliquez sur l’assistant de configuration WordPress standard pour configurer votre site. Vous devrez configurer un compte d’utilisateur administrateur initial. Ces informations d’identification doivent être différentes de celles de votre base de données MySQL. Le formulaire de connexion WordPress apparaîtra lorsque vous aurez terminé. Utilisez votre nouveau compte administrateur pour vous connecter au tableau de bord administrateur.
Prochaines étapes
Votre installation WordPress est maintenant prête à être utilisée. Ajoutez des articles, des pages, des thèmes et des plugins à l’aide de l’interface d’administration, tout comme une installation WordPress sans système d’exploitation.
Il est recommandé de suivre certaines étapes de base de renforcement de la sécurité pour réduire le risque d’attaque de votre site. Vous devez également vous assurer d’avoir une routine de sauvegarde. Cela devra couvrir la base de données MySQL et votre répertoire de téléchargement WordPress, wp-content
.
Configuration avec les secrets Docker
L’utilisation de variables d’environnement pour la configuration est adéquate pour une utilisation locale. Les secrets Docker sont également pris en charge, ce qui vous offre plus de sécurité dans les environnements auxquels d’autres collaborateurs peuvent accéder. Définissez des secrets dans votre fichier Compose et remplacez des variables comme WORDPRESS_DB_PASSWORD
pour WORDPRESS_DB_PASSWORD_FILE
. WordPress chargera la valeur de la variable à partir du fichier secret que Docker injecte.
services: wordpress: environment: WORDPRESS_DB_PASSWORD_FILE: /run/secrets/WORDPRESS_DB_PASSWORD secrets: - WORDPRESS_DB_PASSWORD secrets: WORDPRESS_DB_PASSWORD: file: ./db_password
Ajoutez votre mot de passe au db_password
fichier dans votre répertoire de travail. Il sera accessible en tant que /run/secrets/WORDPRESS_DB_PASSWORD
dans le conteneur. WordPress est chargé de lire ce fichier pour déterminer le mot de passe final de la base de données.
Ajouter votre propre site
Les étapes ci-dessus aboutissent à une nouvelle installation de WordPress prête à être configurée de manière interactive via le centre d’administration. Vous pouvez approvisionner votre conteneur avec un ensemble de thèmes et de plugins par défaut en les montant dans le /var/www/html/wp-content/themes
et /var/www/html/wp-content/plugins
répertoires.
Cette technique vous aide également à créer une image Docker personnalisée pour votre site. Utilisez l’image WordPress officielle comme base et copiez les ressources de votre site dans les répertoires appropriés. Voici un exemple d’empaquetage d’un thème personnalisé sous forme d’image prête à l’emploi :
FROM wordpress:5.7-php7.4-apache
COPY ./theme/ /var/www/html/wp-content/themes/example-theme/
Votre thème sera disponible dans chaque conteneur que vous démarrez. Cependant, cette méthode n’active pas automatiquement le thème. Pour cela, vous aurez besoin d’un troisième service utilisant l’image WordPress CLI.
services: wpcli: image: wordpress:cli-2-php7.4 environment: WORDPRESS_DB_HOST: mysql WORDPRESS_DB_USER: username WORDPRESS_DB_PASSWORD: password WORDPRESS_DB_NAME: wordpress volumes_from: - wordpress:rw
Le conteneur CLI a besoin d’accéder aux variables d’environnement et aux volumes mis à la disposition du conteneur Web standard. Les variables d’environnement doivent être dupliquées, sauf si vous les extrayez dans une section YAML réutilisable, alors que les volumes peuvent être montés en utilisant volumes_from
.
Vous pouvez maintenant utiliser Docker Compose pour terminer l’installation de WordPress et activer votre thème :
docker-compose run wpcli core install --title="My Site" --admin_user=admin --admin_password=changeme --admin_email=me@example.com --url=localhost --allow-root
docker-compose run wpcli theme activate example-theme --allow-root
Ces étapes peuvent être automatisées dans le cadre de votre processus de création d’image ou d’un pipeline CI. Vous pouvez valider le conteneur final pour créer une image autonome de votre site, prête pour une utilisation ultérieure.
Conclusion
Utiliser WordPress avec Docker évite de polluer votre machine hôte et vous aide à conteneuriser votre site et sa configuration. Définir vos services en tant que fichier Docker Compose vous permet de créer rapidement de nouvelles instances et d’aider les collaborateurs à démarrer.
Une fois que votre pile est en ligne, la maintenance continue est similaire à une installation WordPress régulière. Gardez WordPress, vos plugins et vos thèmes à jour et vérifiez de manière proactive les problèmes de sécurité.
Une tâche d’entretien spécifique à Docker consiste à mettre à jour l’image de base WordPress. Il est recommandé d’extraire périodiquement la dernière image afin de ne manquer aucun correctif important du système d’exploitation. Cours docker-compose up -d --pull
pour extraire l’image et redémarrer vos services.