Skip to main content

¿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 archivo compose.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).
En Laravel 13, Sail ya no es el entorno de desarrollo estándar. Se ha eliminado laravel/sail del composer.json del esqueleto y en su lugar se ofrece el comando composer setup. El estándar es ejecutar la aplicación con PHP local + SQLite.
Si necesitas contenedores Docker, puedes instalar Sail como hasta ahora.
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.
1

Añadir el paquete Sail

2

Publicar los archivos de configuración

Ejecuta el comando Artisan sail:install. Publica compose.yaml en la raíz y añade las variables de entorno necesarias a .env.
De forma interactiva puedes elegir servicios: MySQL, Redis, Mailpit, etc.
3

Arrancar Sail

La primera vez tarda un poco al descargar imágenes Docker. Después puedes acceder en http://localhost.
Con Docker Desktop for Linux, ejecuta docker context use default para usar el contexto default. Si aparecen errores de permisos en el contenedor, pon la variable SUPERVISOR_PHP_USER a root.

Añadir servicios

Para añadir servicios a una instalación existente de Sail, usa sail: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.
Añádelo a ~/.zshrc o ~/.bashrc y reinicia la shell.
Con el alias configurado, en todos los ejemplos de esta documentación puedes usar sail en lugar de ./vendor/bin/sail.

Reconstrucción de imágenes

Para mantener los paquetes actualizados, reconstruye las imágenes.

Arranque y parada

Para arrancar todos los contenedores definidos en compose.yaml, usa up.
Para detener, usa 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 de sail 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.
Para abrir una sesión de Tinker:

Servicios

Resumen de los servicios que ofrece Sail. Puedes seleccionarlos durante sail:install.

MySQL

Viene incluido por defecto en compose.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.
Para conectar desde la máquina anfitriona, usa un cliente GUI como TablePlus. Puerto por defecto: 3306.

Redis

Configura REDIS_HOST en .env como redis para acceder desde la app.

Valkey

Si prefieres Valkey como alternativa a Redis, configura REDIS_HOST como valkey.

Mailpit

Captura el correo enviado durante el desarrollo y lo muestra en una interfaz web.
Con Sail en marcha, accede a la UI de Mailpit en 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 en compose.yaml.
En Apple Silicon (M1/M2/M3), usa la imagen selenium/standalone-chromium.
Ejecuta los tests de Dusk.

Versiones de PHP / Node

Cambiar la versión de PHP

Cambia build.context del contenedor laravel.test en compose.yaml.
Tras cambiar, reconstruye la imagen.

Extensiones adicionales de PHP

Las imágenes de Sail incluyen las extensiones habituales. Si necesitas más, añade PHP_EXTENSIONS como argumento de build en el servicio laravel.test, con las extensiones separadas por espacios; se instalarán al construir la imagen.
Después de actualizar 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.
Se genera una URL aleatoria del tipo laravel-sail.site. Para que los helpers de generación de URL funcionen correctamente, configura los proxies de confianza en bootstrap/app.php.
También puedes indicar un subdominio.

Xdebug

Activación

Publica los archivos de configuración con sail:publish y añade en .env:
Comprueba que el php.ini publicado contenga:
Reconstruye la imagen.

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.
Sail sirve la aplicación con artisan serve. El soporte para XDEBUG_CONFIG y XDEBUG_MODE está desde Laravel 8.53.0. Con versiones anteriores la conexión de depuración no funciona.

Personalización

Para personalizar el Dockerfile o los archivos de configuración de Sail, publícalos con sail:publish.
Después de publicarlos, el Dockerfile queda en el directorio docker/. Tras modificarlo, reconstruye la imagen.

Diferencias con producción

Sail está pensado solo para desarrollo local. No es adecuado para producción. Para desplegar con Docker en producción considera servicios como Laravel Cloud, Forge o Ploi, o tu propia configuración Docker Compose / Kubernetes.
Diferencias principales:
Última modificación el 13 de julio de 2026