Skip to main content

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 fichier compose.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).
Sous Laravel 13, Sail n’est plus l’environnement de développement par défaut. laravel/sail a été retiré du composer.json du skeleton ; à la place, la commande composer setup est fournie. Le défaut est PHP local + SQLite.
Si vous avez besoin de conteneurs Docker, vous pouvez toujours installer et utiliser Sail.
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.
1

Ajouter le package Sail

2

Publier les fichiers de configuration

Sélectionnez interactivement les services (MySQL, Redis, Mailpit, etc.). Cette commande publie compose.yaml à la racine et ajoute les variables d’environnement nécessaires à .env.
3

Démarrer Sail

Le premier démarrage télécharge les images Docker. Ensuite, l’application est disponible sur http://localhost.
Sous Docker Desktop pour Linux, exécutez docker context use default pour utiliser le contexte default. En cas d’erreur de permissions dans le conteneur, définissez SUPERVISOR_PHP_USER sur root.

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.
Ajoutez-le à ~/.zshrc ou ~/.bashrc puis redémarrez le shell.
Après cet alias, remplacez tous les ./vendor/bin/sail de la documentation par sail.

Reconstruire les images

Pour maintenir les packages à jour :

Démarrer et arrêter

Lancer tous les conteneurs :
Arrêter avec 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 par sail.
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

Session Tinker :

Services

Voici les services proposés (choisis via sail:install).

MySQL

Inclus par défaut dans compose.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.
Utilisez un client GUI (comme TablePlus) sur le port 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.
Interface web sur 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 dans compose.yaml.
Sur Apple Silicon (M1/M2/M3), utilisez l’image selenium/standalone-chromium.
Puis :

Versions PHP / Node

Changer PHP

Dans compose.yaml, modifiez build.context du service laravel.test.
Puis rebuildez.

Extensions PHP supplémentaires

L’image contient les extensions courantes. Ajoutez-en via PHP_EXTENSIONS.
Rebuildez :

Changer Node


Partager le site

Exposez temporairement le site (revue par un collègue, test de webhook).
Une URL 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.
Sous-domaine personnalisé :

Xdebug

Activer

sail:publish pour publier la configuration, puis dans .env :
Vérifiez que le php.ini publié contient :
Rebuildez :

Débogage CLI

Débogage navigateur

Voir la doc Xdebug. Sous PhpStorm, Zero-configuration debugging est pratique.
Sail utilise artisan serve. Le support de XDEBUG_CONFIG et XDEBUG_MODE requiert Laravel 8.53.0+.

Personnalisation

Publiez le Dockerfile et les fichiers de config :
Le répertoire docker/ est créé. Rebuildez après modification.

Différences avec la production

Sail est un environnement de développement local. Pas prévu pour la production. Pour déployer avec Docker, envisagez Laravel Cloud, Forge, Ploi ou votre propre config Compose / Kubernetes.
Différences principales :
Dernière modification le 13 juillet 2026