Comment déployer rapidement WordPress en tant que conteneur Docker
Liens rapides
- Commencer
- Images de base
- Déployer votre pile
- Prochaines étapes
- Configuration avec les secrets Docker
- Ajouter votre propre site
- Conclusion
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.
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 des volumes Docker pour les répertoires de données WordPress. Ceux-ci stockent vos fichiers de configuration et vos 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 Docker CLI seul, Compose facilite la définition des deux services, de leurs dépendances et de vos volumes. Vous pourrez afficher la pile entière avec une seule commande.
Images de base
L’image officielle de WordPress Docker est disponible dans de nombreuses versions étiquetées différentes. Celles-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 spécifique de WordPress et PHP. Voici quelques exemples :
wordpress:5.7wordpress:php7.4wordpress:5.7-php7.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.iniparamètres en copiant un fichier compatible dans le
$PHP_INI_DIR/conf.drépertoire dans le conteneur WordPress.
Déployer votre pile
Créez un nouveau répertoire pour votre site, puis ajoutez un
docker-compose.ymldéposer. 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, sauf s'ils ont été arrêtés manuellement. Cela garantit que votre site redémarre automatiquement lorsque vous redémarrez le système hôte.
L'intégralité du répertoire d'installation de WordPress est montée 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 la mise à jour automatique de WordPress à partir du panneau d'administration. Si vous montiez uniquement les répertoires de données dans un volume, toutes les modifications de source appliquées par le programme de mise à jour automatique seraient perdues après le redémarrage du conteneur.
Déployez la pile en exécutant
docker-compose up -d. Vous pourrez vous connecter à WordPress en visitant
http://localhostdans 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 lors de la première exécution peut prendre plusieurs secondes.
Cliquez sur l'assistant de configuration WordPress standard pour configurer votre site. Vous devrez créer un compte 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 d'administration.
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 nue.
Il est recommandé de suivre quelques étapes de base de renforcement de la sécurité pour réduire le risque d'attaque de votre site. Vous devez également vous assurer que vous disposez d'une routine de sauvegarde. Cela devra couvrir la base de données MySQL et votre répertoire de téléchargements WordPress,
wp-contentConfiguration 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, vous offrant 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 telles que
WORDPRESS_DB_PASSWORDpour
WORDPRESS_DB_PASSWORD_FILE. WordPress chargera la valeur de la variable à partir du fichier secret injecté par Docker.
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_passwordfichier dans votre répertoire de travail. Il sera accessible comme
/run/secrets/WORDPRESS_DB_PASSWORDdans le conteneur. WordPress est invité à 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 provisionner votre conteneur avec un ensemble de thèmes et de plugins par défaut en les montant dans le
/var/www/html/wp-content/themeset
/var/www/html/wp-content/pluginsrépertoires.
Cette technique vous aide également à créer une image Docker personnalisée pour votre site. Utilisez l'image officielle de WordPress comme base et copiez les éléments de votre site dans les répertoires appropriés. Voici un exemple de la façon dont vous pouvez regrouper 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 doit accéder aux variables d'environnement et aux volumes mis à 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 à l'aide de 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-rootCes é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 sous forme de fichier Docker Compose vous permet de créer rapidement de nouvelles instances et d'aider les collaborateurs à démarrer.
Une fois votre pile en ligne, la maintenance continue est similaire à une installation WordPress classique. 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 de WordPress. Il est recommandé d'extraire périodiquement la dernière image afin de ne manquer aucun correctif important du système d'exploitation. Exécutez docker-compose up -d --pull pour extraire l'image et redémarrer vos services.


