Qu’est-ce que Sail
Laravel Sail est une interface CLI légère pour piloter un environnement de développement Laravel Docker. Vous pouvez construire une application Laravel avec PHP, MySQL et Redis sans connaître Docker. Au cœur de Sail se trouvent le fichiercompose.yaml à la racine du projet et le script sail.
Ce script fournit des méthodes CLI pratiques pour piloter les conteneurs définis dans compose.yaml.
Laravel Sail fonctionne sur macOS, Linux et Windows (via WSL2).
Sail est destiné au développement local uniquement. Pas prévu pour la production.
Pour la production, préparez une configuration Docker / cloud dédiée.
Installation
Sur un projet existant
Installez le package via Composer.Publier les fichiers de configuration
compose.yaml à la racine et ajoute les variables d’environnement nécessaires à .env.Ajouter des services
Pour ajouter des services à une installation Sail existante :Devcontainer
Pour développer dans un Devcontainer :Configuration
Alias shell
Par défaut, il faut taper./vendor/bin/sail à chaque fois. Créez un alias.
~/.zshrc ou ~/.bashrc puis redémarrez le shell.
Reconstruire les images
Pour maintenir les packages à jour :Démarrer et arrêter
Lancer tous les conteneurs :stop, ou Ctrl + C en foreground.
Flux de démarrage
Exécution de commandes
L’application tourne dans Docker : préfixez les commandes PHP, Artisan, Composer, Node/NPM parsail.
Les commandes Laravel classiques (
php artisan, composer, npm) doivent être précédées de sail sous Sail.PHP
Composer
Artisan
Node / NPM
Shell dans le conteneur
Services
Voici les services proposés (choisis viasail:install).
MySQL
Inclus par défaut danscompose.yaml.
Les données persistent via un volume Docker. Une base app et une base testing sont créées au premier démarrage.
Dans .env, réglez DB_HOST sur mysql.
3306.
Redis
Dans.env, REDIS_HOST=redis.
Valkey
Pour utiliser Valkey à la place de Redis,REDIS_HOST=valkey.
Mailpit
Capture les e-mails et les affiche dans une UI web pendant le développement.http://localhost:8025.
Meilisearch / Typesense
Recherche plein texte via Laravel Scout.- Meilisearch :
MEILISEARCH_HOST=http://meilisearch:7700 - Typesense :
TYPESENSE_HOST=typesense,TYPESENSE_PORT=8108, etc.
RustFS (compatible S3)
Émulez un stockage S3 en local.Tests
sail test équivaut à sail artisan test. Une base testing dédiée est utilisée.
Laravel Dusk
Sans installer Selenium localement. Décommentez le service Selenium danscompose.yaml.
Versions PHP / Node
Changer PHP
Danscompose.yaml, modifiez build.context du service laravel.test.
Extensions PHP supplémentaires
L’image contient les extensions courantes. Ajoutez-en viaPHP_EXTENSIONS.
Changer Node
Partager le site
Exposez temporairement le site (revue par un collègue, test de webhook).laravel-sail.site aléatoire est générée. Pour que les helpers d’URL fonctionnent, configurez les proxies de confiance dans bootstrap/app.php.
Xdebug
Activer
sail:publish pour publier la configuration, puis dans .env :
php.ini publié contient :
Débogage CLI
Débogage navigateur
Voir la doc Xdebug. Sous PhpStorm, Zero-configuration debugging est pratique.Personnalisation
Publiez le Dockerfile et les fichiers de config :docker/ est créé. Rebuildez après modification.
Différences avec la production
Différences principales :| Aspect | Sail (local) | Production |
|---|---|---|
| But | Développement / débogage | Fournir un service |
| Xdebug | Activable | À désactiver |
| Mailpit | Capture les e-mails | Serveur SMTP réel |
| Persistance | Volume Docker | DB managée, etc. |
| Performance | Non optimisée | Optimisée |