Configurar Laravel Sail en cualquier proyecto Laravel
Índice de contenido
Ya sabemos como configurar MySQL en nuestro proyecto en Laravel, vamos a seguir hablando sobre el ecosistema de Laravel.
¿Qué es Laravel Sail?
Laravel Sail es una interfaz de línea de comandos liviana para interactuar con el entorno de Docker el cual es ahora el ambiente predeterminado para desarrollar en Laravel. Sail proporciona un excelente punto de partida para crear una aplicación Laravel con PHP, MySQL y Redis y lo mejor de todo, es que, no se necesita tener experiencia previa en Docker.
En esencia, Sail es el archivo docker-compose.yml y el script de navegación que se almacena en la raíz de su proyecto. El script de navegación proporciona una CLI con métodos convenientes para interactuar con los contenedores de Docker definidos por el archivo docker-compose.yml.
Sail es el entorno de desarrollo más reciente de Laravel que surge a partir de Laravel en la versión 8. y viene a equipararse con otras soluciones oficiales como Homestead para Windows y Valet para MacOS y esfuerzos comunitarios como Laragon (particularmente el que yo uso), Laradock y Vessel.
Laravel Sail se basa en Docker, una tecnología que aprovecha los contenedores para empaquetar aplicaciones para que puedan ejecutarse rápida y fácilmente en cualquier sistema operativo.
El futuro de Sail parece ser brillante, ya que la documentación de Laravel ya lo presenta como la forma preferida de instalar y ejecutar proyectos de Laravel localmente, un lugar que Homestead y Valet ocuparon durante años.
Laravel Sail es compatible con macOS, Linux y Windows (a través de WSL2).
Podemos emplear Laravel Sail para en cualquier proyecto en Laravel; para esto vamos a seguir la documentación oficial en la cual tenemos los pasos.
Laravel Sail es una interfaz de línea de comandos liviana para interactuar con el entorno de desarrollo Docker predeterminado de Laravel. Sail proporciona un excelente punto de partida para crear una aplicación Laravel usando PHP, MySQL y Redis sin requerir experiencia previa en Docker.
Cualquier proyecto en Laravel que sea reciente puede usar Sail
Lo primero que necesitamos, es tener el proyecto en Laravel, en mi caso, para ponerte en contexto tengo proyecto en Windows, que los trabajo con Laragon (nada de Sail) y en una Mac con Laravel Sail; son los mismos proyectos pero ejecutándose en ambientes diferentes.
Laravel Sail, una CLI liviana para interactuar con el entorno docker predeterminado de Laravel, lanzó recientemente una nueva actualización que le permite elegir qué servicios deben configurarse en el archivo docker-compose.yml de su proyecto. Algunas de las opciones incluyen MySQL, PostgresSQL, Redis, Memcached, Meilisearch, Selenium y Mailhog.
Un nuevo parámetro en el comando del instalador determina qué servicios debe incluir Laravel Sail. Por ejemplo:
curl -s "https://laravel.build/example-app?with=mysql,redis" | bashSi no pasa la opción with, Sail configurará la pila predeterminada de MySQL, Redis, Meilisearch, Mailhog y Selenium, y esta nueva configuración le brinda un control más detallado.
Instalar Docker
Aunque no vamos a interactuar mucho con Docker, esta viene siendo una dependencia fundamental para poder trabajar con Sail; lo descargas desde la web oficial y lo instalas. En el caso de Windows, debes de tener habilitados aspectos como la virtualización, el subsistema Linux, entre otros, desde la web oficial de Docker, puedes obtener más información.
Instalación de Sail en aplicaciones existentes
Para instalarlo, lo típico, instalamos Sail como un paquete normal en Laravel. Si está interesado en usar Sail con una aplicación Laravel existente, simplemente puede instalar Sail usando el administrador de paquetes Composer. Por supuesto, estos pasos asumen que su entorno de desarrollo local existente le permite instalar las dependencias de Composer:
$ composer require laravel/sail --devEs una dependencia de desarrollo, por eso el --dev
Instalar Sail en el proyecto
De momento, tenemos la dependencia en nuestro proyecto, pero tenemos un comando de artisan para que realice las modificaciones necesarias en nuestro proyecto:
$ php artisan sail:installIniciar Sail
Ya tenemos TODO listo, así que lo siguiente que hacemos es iniciar Sail con el comando de:
./vendor/bin/sail up Puedes revisar tu .env y veras que ya Sail te crea un usuario por defecto en la base de datos que hayas seleccionado:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=sail
DB_PASSWORD=passwordEn tu Docker puedes ver que el proyecto está corriendo:

Extra: Ejecutar en detached mode
Si quieres ejecutar tu proyecto en detached mode o lo que es lo mismo, que no se quede el proceso de la terminal ejecutando, si no que se ejecute en segundo plano, le pasas la opción de -d
./vendor/bin/sail up -dExtra:
Si ves un error como el siguiente al intentar iniciar Sail:
ERROR:
Can't find a suitable configuration file in this directory or any
parent. Are you in the right directory?
Supported filenames: docker-compose.yml, docker-compose.yaml, compose.yml, compose.yamlEs que NO lo instalaste en tu proyecto:
php artisan sail:installY seguir los pasos señalados anteriormente.
Comandos básicos en Sail
En cuanto a la ejecución de comandos puedes usar tanto comandos de php, como de artisan y por supuesto, los que nos provee Sail gracias al paquete que instalamos anteriormente mediante docker-compose.
Es importante notar que, los programas que formen parte de Docker como MySQL o Redis o cualquier otra base de datos, debes de usar los comandos de sail en lugar de artisan básico; por ejemplo en vez de php artisan migrate, ejecuta sail artisan migrate.
Comandos básicos de docker-compose:
- docker-compose ps | sail ps : ver los contenedores en ejecución.
- docker-compose down | sail down : Ver los contenedores y eliminarlos.
- docker-compose up | sail up: Correr los contenedores.
- docker-compose up -d | sail up -d: Correr los contenedores en modo background.
Sobre Laravel Sail
Laravel Sail es un paquete que se instala mediante composer que ofrece una interfaz de línea de comandos; Sail, es otro de los entornos que tenemos a nuestra disposición para poder levantar o servir un proyecto en Laravel; utiliza Docker para ejecutar la aplicación pero ofrece una abstracción a los procesos de configuración de Docker que tendríamos que hacer manual si queremos usar esta herramienta como entorno de desarrollo en Laravel, por lo tanto, todo el proceso de configuración lo hace Sail por nosotros.
Sail permite configurar todo el proyecto sin necesidad de tener instalado prácticamente nada a nivel del sistema operativo, salvo Docker y puede que PHP, todo lo demás, es decir, servidor, base de datos y demás dependencias, se instala en Docker; para poder usar Sail puedes hacerlo sin problemas en Linux o Mac, en el caso de Windows, debes de activar y configurar el subsistema de Linux.
Sail es uno de mis servicios favoritos y lo uso en MacOS para desarrollar mis proyectos además de los proyectos de mis libros y cursos que desarrollo en dicho sistema operativo, es muy liviano y fácil de utilizar, no ofrece problemas en general y lo único que debes de tener en cuenta es apagar cualquier proceso que tengas en los puertos ocupados por Sail al levantar el servicio, que sería, el puerto 80 para el servidor o el 3306, estos puertos también los puedes cambiar para cada proyecto en Laravel con Sail o simplemente apagas otros servicios que tengas instalado a nivel del sistema operativo.
Acepto recibir anuncios de interes sobre este Blog.
Vamos a hablar sobre como puedes usar Laravel Sail en cualquier proyecto de Laravel, como instalarlo y que necesitas.