¿Qué es Sail?
Laravel Sail es una CLI ligera para operar un entorno de desarrollo Docker de Laravel. Permite montar una aplicación con PHP, MySQL y Redis sin necesidad de conocimientos previos de Docker. En el centro de Sail están el archivocompose.yaml en la raíz del proyecto y el script sail.
El script sail ofrece métodos CLI cómodos para manipular los contenedores Docker definidos en compose.yaml.
Laravel Sail funciona en macOS, Linux y Windows (mediante WSL2).
Sail es una herramienta exclusiva de desarrollo local. No está pensada para producción.
Prepara una configuración Docker o de nube adecuada para producción.
Instalación
Instalación en un proyecto existente
Instala el paquete con Composer.Publicar los archivos de configuración
Ejecuta el comando Artisan De forma interactiva puedes elegir servicios: MySQL, Redis, Mailpit, etc.
sail:install.
Publica compose.yaml en la raíz y añade las variables de entorno necesarias a .env.Añadir servicios
Para añadir servicios a una instalación existente de Sail, usasail:add.
Uso con Devcontainer
Si quieres desarrollar dentro de un Devcontainer, usa--devcontainer.
Configuración
Alias en la shell
Por defecto necesitas escribir./vendor/bin/sail cada vez.
Con un alias puedes usar solo sail.
~/.zshrc o ~/.bashrc y reinicia la shell.
Reconstrucción de imágenes
Para mantener los paquetes actualizados, reconstruye las imágenes.Arranque y parada
Para arrancar todos los contenedores definidos encompose.yaml, usa up.
stop; si está en primer plano, pulsa Ctrl + C.
Flujo de arranque
Ejecución de comandos
Con Sail, la aplicación se ejecuta dentro de un contenedor Docker. Ejecuta a través desail los comandos PHP, Artisan, Composer y Node/NPM.
Los comandos
php artisan, composer y npm que aparecen habitualmente en la documentación oficial de Laravel, con Sail se ejecutan anteponiendo sail.Comandos PHP
Comandos Composer
Comandos Artisan
Comandos Node / NPM
CLI del contenedor (shell)
También puedes abrir una sesión Bash dentro del contenedor.Servicios
Resumen de los servicios que ofrece Sail. Puedes seleccionarlos durantesail:install.
MySQL
Viene incluido por defecto encompose.yaml.
Los datos se persisten en un volumen Docker. En el primer arranque se crean automáticamente dos bases de datos: una para la app y otra testing.
Configura DB_HOST en .env como mysql para acceder desde la app.
3306.
Redis
ConfiguraREDIS_HOST en .env como redis para acceder desde la app.
Valkey
Si prefieres Valkey como alternativa a Redis, configuraREDIS_HOST como valkey.
Mailpit
Captura el correo enviado durante el desarrollo y lo muestra en una interfaz web.http://localhost:8025.
Meilisearch / Typesense
Prueba búsqueda de texto completo integrándolos con Laravel Scout.- Meilisearch:
MEILISEARCH_HOST=http://meilisearch:7700 - Typesense:
TYPESENSE_HOST=typesense,TYPESENSE_PORT=8108, etc.
RustFS (almacenamiento compatible con S3)
Si en producción usarás Amazon S3, puedes emular un almacenamiento compatible con S3 en local.Ejecución de pruebas
sail test equivale internamente a sail artisan test. Se usa la base de datos testing dedicada, sin afectar a los datos de desarrollo.
Laravel Dusk
Con Sail puedes ejecutar pruebas de navegador de Dusk sin instalar Selenium localmente. Descomenta el servicio Selenium encompose.yaml.
Versiones de PHP / Node
Cambiar la versión de PHP
Cambiabuild.context del contenedor laravel.test en compose.yaml.
Extensiones adicionales de PHP
Las imágenes de Sail incluyen las extensiones habituales. Si necesitas más, añadePHP_EXTENSIONS como argumento de build en el servicio laravel.test, con las extensiones separadas por espacios; se instalarán al construir la imagen.
compose.yaml, reconstruye la imagen.
Cambiar la versión de Node
Compartir el sitio públicamente
Para previsualizarlo con compañeros o probar webhooks puedes exponer temporalmente el sitio.laravel-sail.site. Para que los helpers de generación de URL funcionen correctamente, configura los proxies de confianza en bootstrap/app.php.
Xdebug
Activación
Publica los archivos de configuración consail:publish y añade en .env:
php.ini publicado contenga:
Depuración desde CLI
Depuración desde el navegador
Consulta la documentación de Xdebug para iniciar la sesión de depuración desde el navegador. Con PhpStorm resulta útil configurar Zero-configuration debugging.Personalización
Para personalizar el Dockerfile o los archivos de configuración de Sail, publícalos consail:publish.
docker/.
Tras modificarlo, reconstruye la imagen.
Diferencias con producción
Diferencias principales:| Aspecto | Sail (local) | Producción |
|---|---|---|
| Objetivo | Desarrollo y depuración | Prestación del servicio |
| Xdebug | Se puede habilitar | Se recomienda deshabilitar |
| Mailpit | Captura correos y los previsualiza | Servidor de correo real |
| Persistencia de datos | Volúmenes Docker | BD gestionada, etc. |
| Rendimiento | Sin optimización | Optimización imprescindible |