Laravel Sail, dockeriza tu entorno de desarrollo Laravel
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.
¿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
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.
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.
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 conocidos.
Sigue aprendiendo Laravel Sail a través de ejemplos en la ruta de Laravel 11.