Article
Laravel Sail : un environnement local pour Laravel avec Docker
Petit dernier dans l'écosystème Laravel, Sail est la nouvelle solution clef en main permettant l'utilisation de Docker comme environnement de développement pour le framework Laravel.
Il est inclut de base dans les nouvelles versions de Laravel mais nous verrons par la suite comment l'ajouter à un projet existant !
Démarrer les containers docker avec Laravel Sail
Pour démarrer et arrêter les conteneurs, les commandes sont les mêmes que docker-compose :
./vendor/bin/sail up
Il est possible de définir un alias pour simplifier la commande :
alias sail='bash vendor/bin/sail'
On peut alors utiliser :
sail up
sail up -d
sail down
sail up
démarre les conteneurs et affiche les résultats dans le terminal. le paramètre -d
permet de les lancer en tâches de fond pour qu'ils persistent après la fermeture de la fenêtre. On utilise alors down
pour les arrêter.
Utiliser des commandes artisan avec Laravel Sail
Il est possible d'utiliser simplement artisan avec sail sans avoir besoin de se connecter à l'intérieur du conteneur :
sail artisan queue:work
De la même façon, il est possible d'exécuter un script PHP :
sail php script.php
Utiliser composer et npm avec Laravel Sail
Laravel Sail inclut dans son image les gestionnaires de packages composer
et npm
ainsi que node
. Il est possible avec la CLI de les appeler directement :
sail composer require laravel/sanctum
sail npm run prod
sail node --version
Il est possible d'utiliser la commande watch
avec Laravel Sail pour bénéficier de la recompilation automatique de ses fichiers front. watch
ne fonctionnait pas sur son setup, dans ce cas watch-poll
est une alternative !
sail npm run watch
sail npm run watch-poll
Accéder à sa base données
Par défault, Laravel Sail expose les ports utilisés par MySQL et Redis. Il est possible d'y connecter son IDE / logiciel favori afin d'exploiter les données avec les ports spécifiés dans le fichier docker-compose
3306 pour MySQL et 6379 pour Redis.
Comment ajouter Laravel Sail à un projet existant ?
On a vu que Laravel Sail est disponible pour les nouveaux projets Laravel mais qu'en est-il pour les projets existant ? La documentation officielle a été mise à jour avec plus de détails sur la procédure à suivre.
Dans un premier temps, il faut ajouter le package composer :
composer require laravel/sail --dev
Laravel Sail ajoute pour nous une commande artisan qui s'occupe du reste 🥳.
php artisan sail:install
Comment mettre à jour Laravel Sail ?
Rien de bien compliqué, si besoin, on met à jour la dépendance dans le fichier composer.json
pour inclure la version de son choix.
Ensuite, on met à jour le package :
composer update laravel/sail
sail composer update laravel/sail
On peut mettre Sail à jour avec la commande sail !Il ne nous reste plus qu'à réinstaller Laravel Sail :
php artisan sail:install
Cela importera pour nous le nouveau fichier docker-compose.yml
. Attention toutefois, si vous avez apportés des modifications au fichier, elles seront écrasées.