Laravel Sail es un entorno de desarrollo ligero basado en Docker que se distribuye con Laravel 8 y versiones superiores. Sail utiliza contenedores para crear un entorno de desarrollo consistente en cualquier máquina, sin importar el sistema operativo que uses. Los contenedores se definen utilizando un archivo docker-compose.yml
que Laravel genera automáticamente cuando se crea un nuevo proyecto con Sail.
Antes de empezar a utilizar Laravel Sail, asegúrate de cumplir con los siguientes requisitos:
Hay dos formas de instalar Laravel con Sail: creando un nuevo proyecto desde cero o añadiendo Sail a un proyecto Laravel existente.
Para crear un nuevo proyecto de Laravel con Sail, simplemente ejecuta el siguiente comando en tu terminal:
curl -s https://laravel.build/mi-proyecto | bash
Este comando descargará e instalará las dependencias necesarias y creará una nueva aplicación Laravel con Sail preconfigurado. Puedes reemplazar mi-proyecto
con el nombre que desees para tu proyecto.
Si ya tienes un proyecto Laravel y quieres usar Sail, puedes agregarlo ejecutando:
composer require laravel/sail --dev
Después de instalar Sail, puedes iniciar el entorno de desarrollo ejecutando:
php artisan sail:install
Este comando te permitirá seleccionar qué servicios deseas habilitar en Sail (por ejemplo, MySQL, Redis, etc.).
Una vez que tengas Laravel Sail instalado, es hora de iniciar el entorno de desarrollo. Para ello, navega a la carpeta de tu proyecto y ejecuta:
./vendor/bin/sail up
Este comando arrancará los contenedores definidos en el archivo docker-compose.yml
y pondrá tu aplicación en funcionamiento. Por defecto, Sail utiliza PHP, MySQL y Redis, pero puedes personalizar esto según tus necesidades.
Si quieres ejecutar Sail en segundo plano, añade el parámetro -d
:
./vendor/bin/sail up -d
De esta manera, tu entorno seguirá en ejecución aunque cierres la terminal.
Laravel Sail ofrece una serie de comandos que te permiten interactuar con tu entorno de desarrollo sin tener que lidiar directamente con Docker. Algunos de los comandos más comunes son:
./vendor/bin/sail up
./vendor/bin/sail down
./vendor/bin/sail ps
./vendor/bin/sail artisan tinker
./vendor/bin/sail test
Si deseas ejecutar comandos dentro del contenedor de la aplicación, utiliza shell
:
./vendor/bin/sail shell
Laravel Sail viene preconfigurado con servicios básicos como MySQL y Redis, pero es fácil extenderlo para agregar más servicios, como PostgreSQL, Elasticsearch, o incluso servicios personalizados.
Para modificar los servicios habilitados, abre el archivo docker-compose.yml
que se encuentra en la raíz del proyecto y añade o modifica los contenedores según sea necesario.
Por ejemplo, para agregar soporte a PostgreSQL, añade el siguiente bloque al archivo docker-compose.yml
:
services:
postgres:
image: postgres:13
environment:
POSTGRES_USER: sail
POSTGRES_PASSWORD: password
POSTGRES_DB: laravel
ports:
- "5432:5432"
Luego, actualiza la variable de entorno DB_CONNECTION
en el archivo .env
a pgsql
para conectar Laravel con la base de datos PostgreSQL.
docker-compose.yml
El archivo docker-compose.yml
es la configuración principal de Sail. Aquí puedes personalizar los servicios, puertos y variables de entorno que se utilizan en el entorno de desarrollo. Por ejemplo:
version: '3.8'
services:
laravel.test:
build:
context: ./docker/8.0
ports:
- '80:80'
volumes:
- .:/var/www/html
En este ejemplo, estamos ajustando la versión de PHP que se usa en el contenedor (8.0
), así como los puertos mapeados (80:80
) y los volúmenes que se montan (./:/var/www/html
).
Sail también facilita la ejecución de pruebas y la depuración del entorno. Algunos comandos útiles para estos fines son:
./vendor/bin/sail test
Laravel Sail incluye soporte para Xdebug. Simplemente añade las siguientes líneas a tu archivo .env
:
SAIL_XDEBUG_MODE=develop,debug
Luego, reinicia el entorno con:
./vendor/bin/sail up -d
De esta manera, Xdebug estará habilitado y listo para conectarse con tu IDE.
Laravel Sail es una herramienta potente y fácil de usar para crear entornos de desarrollo consistentes y rápidos con Docker. Con Sail, puedes comenzar a desarrollar en Laravel sin tener que lidiar con la instalación de múltiples servicios y dependencias manualmente. Además, su flexibilidad te permite personalizar cada aspecto de tu entorno de desarrollo para adaptarse a las necesidades de tu aplicación.
Con esta guía, deberías tener una comprensión sólida de cómo usar Laravel Sail para crear y gestionar entornos de desarrollo. ¡Ahora es tu turno de comenzar a experimentar y aprovechar al máximo esta poderosa herramienta!
Jorge García
Fullstack developer