Laravel Sail es una interfaz de línea de comandos sencilla para interactuar con el entorno de desarrollo Docker predeterminado de Laravel. Laravel Sail proporciona un excelente punto de partida para crear aplicaciones Laravel con PHP, MySQL y Redis sin necesidad de tener experiencia previa en Docker.
Si no tienes conocimientos de Docker no te pierdas este curso.
Laravel Sail es compatible con Linux, Mac y Windows, pero en el caso de Windows vía WSL2 (Windows Subsystem for Linux). El proceso para hacer funcionar Laravel Sail en Windows no es complejo, pero dependiendo del entorno puede ser bastante pesado.
Si no sabes como instalar y configurar WSL2 en Windows para utilizar Laravel Sail, no te pierdas este curso.
¿Por qué utilizar Laravel Sail?
Si trabajas en entornos Linux o Mac no tendrás demasiados problemas para configurar tus entornos, hoy en día es una tarea bastante sencilla. En cambio, si te encuentras en Windows, instalar y configurar herramientas como Redis o Memcached puede resultar más complejo.
Independientemente del entorno en el que nos encontremos, Laravel Sail nos puede facilitar la vida enormemente para configurar entornos de desarrollo complejos sin configuraciones por nuestra parte. Para que te hagas una idea, los siguientes son los servicios que podemos utilizar en Laravel Sail con 0 configuraciones.
mysql
pgsql
mariadb
redis
memcached
meilisearch
minio
selenium
mailhog
¿Por qué Laravel Sail es la herramienta perfecta para desarrollo?
Laravel Sail revoluciona el desarrollo local en Laravel al resolver uno de los mayores desafíos en el desarrollo web moderno: la consistencia del entorno de desarrollo. Aquí te explicamos por qué se ha convertido en una herramienta indispensable:
Desarrollo sin fricción
Entorno uniforme garantizado: Todos los desarrolladores del equipo trabajan exactamente con las mismas versiones de PHP, MySQL, Redis y demás servicios, eliminando el clásico "en mi máquina funciona".
Zero-configuration: Sail viene preconfigurado con las mejores prácticas para desarrollo Laravel. No necesitas ser un experto en Docker para tener un entorno profesional funcionando en minutos.
Flexibilidad y modernidad
Cambios sin compromiso: ¿Necesitas probar tu aplicación con PHP 8.4? ¿Quieres cambiar de MySQL a PostgreSQL? Con Sail, estos cambios son cuestión de modificar una línea en tu configuración.
Stack moderno incluido: Sail integra Vite para HMR (Hot Module Replacement) y otras herramientas modernas. Para WSL2, es necesaria una configuración específica en el archivo
vite.config.js:
Desarrollo local profesional
Servicios enterprise en local: Puedes trabajar con servicios como Redis, Memcached o Meilisearch en local exactamente igual que en producción, sin comprometer el rendimiento de tu máquina.
Aislamiento perfecto: Cada proyecto está completamente aislado. Puedes tener múltiples proyectos usando diferentes versiones de PHP o MySQL sin conflictos.
Productividad mejorada
CLI simplificada: Olvídate de recordar comandos Docker complejos.
sail artisan migrateosail testson todo lo que necesitas.Testing realista: Al usar el mismo entorno que producción, los tests son más fiables y representativos.
Ideal para equipos
Onboarding rápido: Nuevos desarrolladores pueden unirse al proyecto y tener el entorno completo funcionando en minutos, no horas.
Documentación viva: El archivo
docker-compose.ymlactúa como documentación viva de las dependencias y servicios necesarios para tu aplicación.
Desarrollo multiplataforma sin dolor
Consistencia cross-platform: Ya sea en Windows (vía WSL2), macOS o Linux, la experiencia de desarrollo es idéntica.
Performance optimizada: Sail está optimizado para ofrecer el mejor rendimiento posible en desarrollo local, con configuraciones específicas para cada sistema operativo.
Requisitos específicos por sistema operativo:
macOS:
Docker Desktop para Mac: Asegúrate de tener Docker Desktop instalado y actualizado. Esto también incluye Docker Compose, que es necesario para ejecutar los servicios de Docker.
Linux:
Docker Compose: Instala Docker Compose utilizando los comandos apt, yum, dnf, o cualquier otro gestor de paquetes disponible en tu distribución de Linux.
Docker Desktop: Si utilizas Docker Desktop para Linux, debes ejecutar el siguiente comando. Si no utilizas Docker Desktop para Linux, puede omitir este paso.
Windows:
Docker Desktop para Windows: Asegúrate de instalar Docker Desktop y activar el soporte de WSL 2 (Windows Subsystem for Linux), ya que Sail requiere un entorno Unix para funcionar correctamente.
WSL2: Es recomendable instalar una distribución de Linux (como Ubuntu) a través de WSL 2 para ejecutar los comandos de Sail. Docker Desktop en Windows utiliza WSL2 para proporcionar un entorno de Docker nativo. Si tienes dudas sobre WSL2, no te pierdas nuestro curso.
Crear un proyecto con Laravel Sail
La forma más sencilla de crear un proyecto con Laravel Sail es utilizar el siguiente comando en cualquiera de sus versiones.
Instalar Laravel Sail en un proyecto existente
También es posible instalar Laravel Sail en un proyecto existente, para ello, simplemente ejecuta los siguientes comandos en tu proyecto Laravel.
Arrancar un proyecto Laravel con Laravel Sail
En cualquiera de los casos de cómo haya sido creado el proyecto, arrancarlo es muy sencillo. Primero, debemos arrancar Docker, a continuación, debemos ejecutar el comando sail up. El problema es que el comando sail no existe en nuestro entorno, ya que sail está ubicado en nuestro proyecto vendor/bin/sail. Mi recomendación y la de Laravel es crear un alias de la siguiente forma.
Si somos capaces de crear un alias, podremos ejecutar el siguiente comando para arrancar nuestro proyecto.
En caso contrario deberemos ejecutar lo siguiente.
Sea cual sea el caso, tenemos un flag en el comando sail up que nos permite dejar el terminal libre haciendo un detach del proceso, es decir, lo dejamos corriendo, pero sin ocupar el terminal, yo es lo que hago siempre:
Ejecutar comandos en un proyecto Laravel Sail
En este punto debemos entender que Docker crea entornos aislados de nuestra computadora, por este motivo, las versiones de Php, MySQL o Composer que podamos tener instaladas en nuestro equipo no son las mismas que las que estaremos utilizando en nuestro proyecto con Laravel Sail.
Para ejecutar cualquier comando y que éste afecte a nuestro proyecto debemos estar en un terminal ubicados en el directorio del proyecto en cuestión y ejecutar algunos de los siguientes comandos, todos a modo de ejemplo para que te hagas a la idea.
A continuación, te dejo la lista de todos los comandos que tenemos disponibles con Laravel Sail:
Bases de datos del proyecto con Laravel Sail
Cuando creamos nuestro proyecto con Laravel Sail, por defecto, se crean dos bases de datos utilizando MySQL:
laravel: Este es el nombre por defecto de la base de datos del proyecto, simplemente se utiliza el nombre que está definido en el .env.testing: Esta base de datos está pensada para el entorno de tests con Laravel, y se crea al crear un nuevo proyecto con Laravel Sail.
Acceder a MySQL con un DBMS en Laravel Sail
Si no tenemos ocupado el puerto 3306, podemos acceder igual que lo hacemos siempre sin realizar ninguna modificación en nuestro proyecto. En cambio, si tenemos el puerto 3306 ocupado, deberemos hacer uso de la variable FORWARD_DB_PORT para cambiar el puerto con el que accederemos al 3306 del contenedor de la siguiente forma:
Una vez hecho, te recomiendo reiniciar tu entorno desde el cliente de docker y acceder a tu base de datos con tu DBMS preferido utilizando las siguientes credenciales.
Añadir nuevos servicios a Laravel Sail
Sail permite agregar servicios adicionales a tu entorno de desarrollo de forma sencilla. Hay dos maneras principales de hacerlo:
Usando el comando sail:install
Laravel Sail proporciona un comando específico para instalar servicios adicionales:
Modificando docker-compose.yml manualmente
También puedes editar directamente tu archivo docker-compose.yml para añadir servicios personalizados:
Configuración de variables de entorno
Para cada nuevo servicio, necesitarás actualizar tu archivo .env:
Servicios populares y su configuración
RabbitMQ:
Elasticsearch:
Buenas prácticas al añadir servicios
Versionado: Especifica siempre una versión exacta de la imagen Docker para evitar problemas de compatibilidad.
Persistencia: Configura volúmenes para datos que necesiten persistir:
Redes: Asegúrate de que el servicio está en la red
sail:Variables de entorno: Usa variables del
.envpara configuraciones sensibles:
Reinicio después de cambios
Después de añadir nuevos servicios:
Compartir nuestro sitio con Laravel Sail
Muchas veces necesitamos compartir nuestro sitio por varios motivos, mostrar nuestro trabajo a nuestros clientes o simplemente para dar acceso a Webhooks en entorno de desarrollo cuando todavía no tenemos nuestro sitio publicado. Gracias a Laravel Sail este proceso se convierte en algo muy sencillo, sólo debemos ejecutar el siguiente comando dentro de nuestro proyecto y podremos exponer nuestro proyecto local a todo el mundo durante 30 minutos.
Es importante destacar que Laravel Sail está diseñado específicamente para desarrollo, no para producción. En producción, podrías usar las imágenes Docker base que utiliza Sail, pero con configuraciones optimizadas para producción. Sail se centra en proporcionar la mejor experiencia de desarrollo posible, permitiéndote concentrarte en escribir código en lugar de gestionar tu entorno de desarrollo.
Puedes ver que Laravel Sail es una poderosa herramienta para facilitar nuestro entorno de desarrollo con Laravel.
Si te ha gustado esta entrada, compártela con tus colegas.
Sigue aprendiendo Laravel Sail a través de ejemplos en la ruta de Laravel 11.
Curso Laravel 12
Completo 2026
El único curso 100% actualizado que incluye Laravel 12, Livewire 3, Vue 3, React 19 e Inertia 2. Aprende con proyectos reales y las últimas funcionalidades.
star Incluido en cualquier suscripción