WPML 5.0 Bêta – Une expérience repensée et une traduction automatique plus intelligente
WPML 5.0 est la plus importante mise à jour que nous ayons publiée depuis des années.
Avec Docker Compose, Xdebug et PhpStorm, vous pouvez créer un environnement de développement local reproductible, isolé et facile à gérer qui reproduit un serveur de production, améliorant ainsi la qualité de vos projets WordPress.
Bonjour chers développeurs et utilisateurs avancés de WordPress ! Aujourd’hui, je suis ravi de partager un tutoriel complet mais simple sur la configuration d’un environnement de développement WordPress local à l’aide de Docker Compose. Ayant récemment rejoint l’équipe dynamique d’OnTheGoSystems, j’ai décidé d’apporter ma zone de confort avec moi, ce qui est le but de cette configuration.
L’objectif était simple : développer une configuration où je pourrais avoir un contrôle granulaire sur mes outils de développement, en intégrant Xdebug et WP-CLI à l’image Docker officielle de WordPress. Cette configuration ne vise pas à réinventer la roue, mais à la personnaliser pour l’adapter aux préférences et aux styles de travail de chacun. J’espère que ce guide vous sera utile pour configurer un environnement similaire, et qu’il facilitera votre parcours dans le développement WordPress.
Pour tirer le meilleur parti de ce tutoriel, vous devez avoir installé les dépendances suivantes :
Notre objectif est d’établir un environnement de développement WordPress local qui soit isolé, reproductible et facile à gérer. Docker constitue l’épine dorsale de cette configuration, fournissant l’infrastructure pour contenir et gérer notre application. Xdebug et PhpStorm sont les pièces complémentaires de ce puzzle, offrant des capacités améliorées de développement et de débogage de code PHP.
Notre parcours commencera par la création d’un Dockerfile qui étend l’image Docker officielle de WordPress. Nous améliorerons cette image en y incorporant Xdebug et WP-CLI, des outils essentiels dans nos tâches de développement et de débogage WordPress.
Ensuite, nous rédigerons un fichier Docker Compose pour orchestrer deux services clés : WordPress et MySQL. Et croyez-le ou non, c’est pour ainsi dire tout !
La beauté de cette configuration est qu’elle aboutit à un environnement de développement local qui non seulement reproduit un serveur de production, mais est également facilement reproductible. Cela signifie que nous pouvons dupliquer facilement la configuration exacte sur plusieurs environnements ou machines, garantissant ainsi la cohérence et réduisant les problèmes liés à la configuration.
Notre parcours commence par la création d’un nouveau Dockerfile. Ce fichier indique à Docker comment construire notre image. Voici la configuration de base avec laquelle je commence généralement :
# Use the official WordPress image as a parent image
FROM wordpress:latest
# Install Xdebug
RUN pecl install xdebug
# Install WP-CLI
RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && \
chmod +x wp-cli.phar && \
mv wp-cli.phar /usr/local/bin/wp
# Copy xdebug.ini into the container
COPY xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
Dans ce Dockerfile, nous partons de l’image WordPress officielle. Nous installons ensuite Xdebug et WP-CLI séparément pour des raisons de clarté et de maintenabilité. Le fichier de configuration de Xdebug (xdebug.ini) est copié dans le répertoire approprié du conteneur. Cela constitue la base de ma configuration de prédilection pour un environnement de développement WordPress local.
Maintenant que Xdebug est installé dans notre image Docker, nous devons le configurer pour qu’il fonctionne dans notre environnement de développement local. Cela implique la création d’un fichier xdebug.ini avec les paramètres suivants :
ini zend_extension=xdebug xdebug.mode=debug xdebug.client_port=9003 xdebug.start_with_request=yes
Ces paramètres activent l’extension Xdebug, la configurent pour démarrer le débogage à chaque requête et définissent le port client auquel elle doit se connecter (dans ce cas, 9003). Vous avez peut-être remarqué que nous n’avons pas encore spécifié de client_host, mais ne vous inquiétez pas, il entrera en jeu très bientôt dans notre processus de configuration.
Ensuite, nous allons créer un fichier docker-compose.yml qui configure nos services WordPress et MySQL :
yaml
version: '3'
services:
# MySQL Service
mysql:
image: mysql:latest
container_name: mysql_container
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
# WordPress Service
wordpress:
depends_on:
- mysql
image: wordpress:latest
container_name: wp_container
volumes:
- ./wp_data:/var/www/html
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DEBUG: 1
XDEBUG_CONFIG: client_host=host.docker.internal
ports:
- "8000:8000"
volumes:
db_data:
Dans ce fichier, nous avons défini deux services – MySQL et WordPress. Chacun de ces services possède un nom de conteneur unique, pour faciliter la référence et la gestion.
La directive restart: always garantit que le service redémarrera toujours s’il s’arrête de manière inattendue. S’il est arrêté manuellement, il n’est redémarré que lorsque le conteneur est redémarré manuellement.
Le service MySQL monte un volume Docker (db_data), garantissant un stockage persistant même si le conteneur est supprimé. Pour le service WordPress, nous montons un répertoire local (./wp_data) sur le conteneur. Cela signifie que toute modification des fichiers WordPress sur notre système local sera répercutée dans le conteneur.
Nous avons ajouté deux variables d’environnement supplémentaires pour le service WordPress – WORDPRESS_DEBUG pour activer le débogage WordPress et XDEBUG_CONFIG pour spécifier l’hôte client pour Xdebug. Le client_host est défini sur host.docker.internal, qui est un nom DNS spécial qui achemine vers l’adresse IP interne de l’hôte, permettant à Xdebug de communiquer avec notre IDE sur l’hôte.
Veuillez noter que le paramètre client_host est adapté à Windows et macOS. Pour Linux, une alternative courante consiste à remplacer host.docker.internal par l’adresse IP réelle de votre machine, qui peut être obtenue via la commande de terminal ip addr show.
Une fois que votre Dockerfile, votre fichier de configuration Xdebug et votre fichier Docker Compose sont prêts, il est temps de donner vie à votre environnement de développement WordPress local.
Pour ce faire, naviguez simplement vers le répertoire contenant votre fichier Docker Compose dans le terminal, et exécutez la commande suivante :
bash docker-compose up -d
Cette commande demandera à Docker de démarrer vos services en arrière-plan.
En cas d’exécution réussie, vous aurez un site WordPress fonctionnant sur votre machine locale, accessible via http://localhost:8000. Toute modification que vous apporterez à vos fichiers PHP WordPress sera désormais répercutée sur ce site, offrant un moyen simple et efficace de développer et de déboguer votre application WordPress.
De plus, votre service MySQL sera également opérationnel, accessible sur le port 3306. Cela fournit une base de données MySQL entièrement fonctionnelle pour votre application WordPress, reproduisant un environnement réaliste pour vos besoins de développement.
Pour ceux qui souhaitent approfondir un peu leur configuration PHP, nous pouvons introduire un fichier phpinfo.php dans notre image Docker. Lors de son accès, ce fichier présentera un aperçu complet de vos paramètres PHP.
Pour ajouter le fichier phpinfo.php, vous devrez d’abord le créer dans le même répertoire que votre Dockerfile. Le fichier doit contenir le code PHP suivant :
<?php phpinfo(); ?>
Ensuite, ajoutez la ligne suivante à votre Dockerfile :
# Bonus: Copy phpinfo.php into the container COPY phpinfo.php /var/www/html/phpinfo.php
Cette commande copiera le fichier phpinfo.php dans le répertoire racine de WordPress au sein de l’image Docker.
Pour vous assurer que ces modifications prennent effet, vous devrez reconstruire votre image Docker et redémarrer les services Docker Compose. Exécutez les commandes suivantes dans votre terminal :
bash docker-compose down docker-compose up -d --build
La commande docker-compose down arrête et supprime vos conteneurs Docker actuels. Ensuite, docker-compose up -d –build reconstruit l’image Docker avec le fichier phpinfo.php nouvellement ajouté, et redémarre vos services WordPress et MySQL en arrière-plan.
Vous pouvez maintenant accéder au fichier phpinfo.php en naviguant vers http://localhost:8000/phpinfo.php dans votre navigateur web. Vous y verrez une page détaillée décrivant votre configuration PHP, ce qui peut être une ressource précieuse pour le débogage et la vérification.
Maintenant que vous avez configuré votre environnement de développement WordPress local avec Docker, Xdebug et PhpStorm, vous pouvez commencer à déboguer votre site WordPress. Voici un bref aperçu de la façon de démarrer :
Alors que nous concluons ce tutoriel, j’espère qu’il deviendra une ressource précieuse pour vous comme il l’a été pour moi dans mon parcours. La possibilité de personnaliser cette configuration – comme nous l’avons fait en ajoutant le fichier phpinfo.php – ouvre une myriade de possibilités, rendant notre processus de développement plus robuste et plus efficace. Tout le code est disponible dans ce dépôt GitHub. N’hésitez pas à le récupérer, à l’essayer et à suggérer des améliorations !
J’utilise personnellement un système d’exploitation Ubuntu, mais la beauté de cette configuration est que grâce à Docker, cela n’a pas d’importance ! Grâce au fait que Docker peut fonctionner sur n’importe quel système d’exploitation de manière égale, que vous préfériez macOS, Windows ou Linux, la configuration et l’utilisation sont les mêmes !
Merci de m’avoir accompagné dans cette présentation. J’espère que vous me ferez part de vos expériences ou de toutes suggestions que vous pourriez avoir pour améliorer encore cette configuration. N’oubliez pas que la croissance se nourrit du partage des connaissances et de l’esprit de collaboration.
Bon codage, et continuons à créer des expériences WordPress incroyables ensemble !