Développement WordPress local avec Lando (ou Docker simplifié)
Publié: 2019-11-22Plus tôt cette année, j'ai écrit un guide sur la façon d'utiliser Docker pour développer dans WordPress. J'ai vraiment aimé travailler sur ce post, et il semble que vous l'ayez aimé aussi (merci pour tous vos commentaires et e-mails). Si vous n'avez pas lu le message, voici un petit rappel :
Docker est un programme qui vous permet de regrouper des logiciels dans des conteneurs et de les exécuter sur des machines virtuelles. Le principal avantage de Docker est que ses conteneurs s'exécutent à l'aide de l'environnement de virtualisation fourni par le système d'exploitation hôte, ce qui se traduit par des conteneurs rapides et légers .
Le principal problème de Docker est que sa configuration est lourde . Par exemple, pour créer un environnement de développement WordPress, nous devons démarrer deux (au moins) services : un service de base de données et un serveur d'applications Web.
Dans le post commenté au début, nous avons vu un outil, Docker Compose , qui permet de définir tous les services que nous devons lancer pour un projet donné. Avec Docker Compose , nous avons réussi à définir dans un seul fichier docker-compose.yml toutes les dépendances de notre projet et à le lancer avec une seule commande.
Ou c'est ce que j'avais initialement promis, car j'ai clôturé le post en expliquant comment configurer un énième service Docker qui vous permettrait d'utiliser de beaux noms de domaine dans vos installations WordPress. Si vous vous souvenez, avec le fichier original docker-compose.yml , notre env de développement WordPress serait accessible via http://localhost:8080 . Mais si nous voulions utiliser quelque chose comme http://myplugin.local nous devions mettre en place un proxy qui pourrait résoudre les noms de domaine et ajouter plus de paramètres à notre docker-compose.yml …
Je sais, je sais, c'était assez compliqué de mettre les choses en place ! Mais une fois que tout était correctement configuré, c'était assez facile, n'est-ce pas ? Quoi qu'il en soit, j'ai décidé de vous présenter mon nouvel ami : Lando. Il vous aidera à configurer de nouveaux environnements de développement en quelques secondes.
Entrez Lando
Je pense que la meilleure façon de vous présenter à Lando est d'utiliser une phrase de sa documentation :
Lando est destiné aux développeurs qui souhaitent éviter le masochisme intégré consistant à utiliser directement
Les docs de Landodockeroudocker-compose.
Ouais, apparemment utiliser docker et docker-compose c'est pour les masochistes… Voyons donc comment on peut spécifier rapidement et sans complications tous les services dont on a besoin pour travailler sur un nouveau projet WordPress.
Installer Lando
La première chose à faire pour pouvoir utiliser Lando est (surprise, surprise !) de l'installer sur votre ordinateur. Le processus d'installation est extrêmement simple et très bien documenté, mais nous pouvons le résumer dans les étapes suivantes :
- Lando nécessite Docker. Si vous êtes sous Linux, installez d'abord Docker Community Edition. Si vous êtes sur Mac ou Windows, le programme d'installation de Lando installera lui-même Docker s'il n'est pas déjà disponible.
- Téléchargez le programme d'installation Lando approprié pour votre système d'exploitation. Dans mon cas, par exemple, j'ai téléchargé le fichier
lando-v3.0.0-rc.22.deb(je suis sous Linux) et je l'ai installé avecdpkg. Pour Mac, utilisez le fichier.dmget, pour Windows, le.exe. - Exécutez le programme d'installation et suivez les étapes.
Et c'est tout!
Comment créer un nouveau projet WordPress dans Lando
La première chose que nous devons faire est d'aller dans le dossier du projet avec lequel nous voulons travailler (ou d'en créer un nouveau). Dans mon cas, je vais créer un nouvel env de développement WordPress pour développer notre plugin Nelio A/B Testing, donc je vais cd dans le dossier où j'ai téléchargé le projet : ~/dev/plugins/nelio-ab-testing .
Une fois là-bas, nous devons créer le fichier de configuration de Lando. Ce fichier est similaire à docker-compose.yml , mais beaucoup plus simple. Pour commencer, vous n'avez même pas besoin de l'écrire : Lando peut le faire pour vous ! Utilisez simplement lando init pour créer un nouvel environnement de développement :
lando init \ --recipe wordpress --source remote --remote-url https://wordpress.org/latest.tar.gz --webroot wordpress --name "Nelio AB Testing" # name the project as you wantVoyons ce que fait l'instruction précédente :
- Tout d'abord, nous disons à Lando que nous voulons créer un nouveau fichier de configuration dans le répertoire courant en utilisant
lando init. - Le premier paramètre (
--recipe wordpress) indique à Lando que nous voulons créer un projet WordPress. Cela aidera Lando à connaître les services qu'il doit mettre en place (une base de données, un serveur web, etc.). - Ensuite, nous indiquons que nous voulons que Lando télécharge WordPress depuis WordPress.org.
- Avec
--webroot wordpressnous indiquons à Lando où WordPress va être installé. Puisque nous venons de préciser que WordPress doit être téléchargé depuis WordPress.org et que le zip que Lando téléchargera créera un dossierwordpressaprès la décompression, c'est l'emplacement que nous utilisons pour Lando. - Enfin, nous spécifions le nom de notre projet (Lando l'utilisera pour générer des domaines URL conviviaux).
Après avoir exécuté la commande précédente, vous verrez comment Lando installe tout et vous accueille avec les informations suivantes :
NOW WE'RE COOKING WITH FIRE!!! Your app has been initialized! Go to the directory where your app was initialized and run `lando start` to get rolling. Check the LOCATION printed below if you are unsure where to go. Oh... and here are some vitals: NAME my-site LOCATION /tmp/plugin RECIPE wordpress DOCS https://docs.devwithlando.io/tutorials/wordpress.html Listez tous les fichiers du dossier actuel et vous verrez que Lando a créé un fichier caché nommé .lando.yml avec le contenu suivant :

name: my-site recipe: wordpress config: webroot: wordpress Extrêmement simple, non ? Démarrez maintenant votre service en utilisant lando start et vous êtes prêt à partir :
BOOMSHAKALAKA!!! Your app has started up correctly. Here are some vitals: NAME my-site LOCATION /tmp/plugin SERVICES appserver, database APPSERVER URLS https://localhost:32781 http://localhost:32782 http://nelio-ab-testing.lndo.site https://nelio-ab-testing.lndo.siteFélicitations! Vous avez maintenant une nouvelle installation WordPress opérationnelle. Si nous allons maintenant sur l'une des URL Lando répertoriées au démarrage, vous verrez qu'il vous suffit de suivre les étapes pour terminer l'installation de WordPress :

Terminer rapidement l'installation de WordPress
Évidemment, vous pouvez terminer l'installation de WordPress en utilisant le programme d'installation de l'écran précédent. Mais il existe une solution encore meilleure : utilisez WP-CLI, que nous avons également disponible dans Lando.
Pour installer WordPress avec WP-CLI, nous devons d'abord créer un wp-config.php dans le répertoire wordpress . Pour créer ce fichier, nous avons besoin d'informations sur notre base de données : où elle se trouve, son nom d'utilisateur et son mot de passe, etc. Toutes ces informations peuvent être trouvées via lando info , qui renvoie le JSON suivant :
[ { service: 'appserver', urls: [ 'https://localhost:32781', 'http://localhost:32782', 'http://nelio-ab-testing.lndo.site', 'https://nelio-ab-testing.lndo.site' ], //... }, { service: 'database', //... creds: { database: 'wordpress', password: 'wordpress', user: 'wordpress', }, //... } ] Comme le résultat est une chaîne JSON, nous pouvons utiliser l'outil jq d'Unix pour récupérer les valeurs spécifiques qui nous intéressent. Par exemple, si nous voulons connaître l'utilisateur de notre base de données, exécutez simplement ceci :
$ lando info --service database --format json | jq -r ".[0].creds.user" wordpressMaintenant, exploitons cette commande et récupérons toutes les données pertinentes dont nous avons besoin pour créer le fichier de configuration à l'aide de WP-CLI :
# Find WordPress' directory (webroot entry in .lando.yml) WEBROOT=`grep webroot .lando.yml | cut -d: -f2 | xargs` # Retrieve database credentials using lando info DBNAME=`lando info --service database --format json | jq -r ".[0].creds.database"` DBUSER=`lando info --service database --format json | jq -r ".[0].creds.user"` DBPASS=`lando info --service database --format json | jq -r ".[0].creds.password"` DBHOST=`lando info --service database --format json | jq -r ".[0].hostnames[0]"` # Create WordPress' config file lando wp config create \ --dbname=$DBNAME \ --dbuser=$DBUSER \ --dbpass=$DBPASS \ --dbhost=$DBHOST \ --path=$WEBROOTUne fois le fichier créé, nous pouvons lancer la commande d'installation :
# Get WordPress' project name from .lando.yml PROJECT_NAME=`grep name .lando.yml | cut -d: -f2 | xargs` SITE_NAME=`echo "$PROJECT_NAME" | sed -e "s/-/ /g" | sed "s/\b[az]/\u&/g"` # Get one of the possible WordPress' URLs ando created (https) URL=`lando info --service appserver --format json | jq -r ".[0].urls" | grep -vw localhost | grep https: | cut -d'"' -f2` # Extract the domain from the previous URL (removing https) DOMAIN=`echo "$URL" | sed -e "s/^https:\/\///"` # Install WordPress lando wp core install --url=$URL --title="$SITE_NAME" --admin_user=admin --admin_password=password --admin_email=admin@$DOMAIN --path=$WEBROOTTerminé! Nous avons déjà WordPress installé et fonctionnel.
Comment mettre notre projet dans WordPress
Si nous nous connectons maintenant à WordPress et que nous regardons les plugins disponibles, nous verrons que notre plugin (Nelio A/B Testing, dans mon exemple) n'y est pas. C'est parce que Nelio A/B Testing n'est pas dans wordpress/wp-content/plugins/ . Pour résoudre ce problème, nous devons simplement créer un lien symbolique dans ce répertoire qui pointe vers la racine de notre projet :
cd wordpress/wp-content/plugins/ ln -s ../../../ nelio-ab-testing cd -Et c'est tout!
C'est maintenant à vous de décider de l'approche qui convient le mieux à vos besoins. Si vous souhaitez créer une installation WordPress pour chaque projet, suivez simplement les étapes que j'ai décrites. Si, d'un autre côté, vous voulez une seule installation WordPress avec tous vos thèmes et plugins, créez simplement un nouveau dossier, init Lando là-bas, et ajoutez tous vos plugins dans wordpress/wp-content/plugins/ .
J'espère que vous avez aimé cet article et cet outil autant que moi. Et j'espère que cela rend votre travail plus facile et plus amusant. Depuis que j'utilise Lando, je me suis complètement éloigné de Docker.
Image sélectionnée par Victoire Joncheray sur Unsplash.
