Statamic Peak

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.