En la publicación pasada vimos como crear un proyecto con “Laravel Installer” y las alternativas de instalación a este paquete. Después vimos como configurar un proyecto existente de Laravel.

La publicación pasada la puedes revisar aquí:

Ahora nos toca levantar nuestro entorno desarrollo; en la pasada publicación usamos el comando “artisan serve” para levantar un servidor de desarrollo propio de Laravel. El inconveniente, que no viene con los servicios configurados como por ejemplo en nuestro caso MySQL, entonces tendríamos que hacer una instalación manual en nuestros equipos con MySQL.

Para sortear este problema, Laravel tiene un paquete que se llama “Laravel Sail” el cual nos despliega un entorno de desarrollo local pero basado en Docker, esto hace que no tengamos que instalar nada en nuestros equipos ni cambiar la configuración del mismo, porque toda la configuración y dependencias se ejecutan en los contenedores de Docker.

Laravel Sail esta disponible en la versión 8.x de Laravel y es fácil configurarlo en proyectos existentes.

Como único requisito es tener instalado Docker y Docker Compose y tener libre el puerto 80 para poder visualizar nuestro proyecto, una vez cumplido esto simplemente ejecutamos los siguientes comandos:

Configuramos nuestro alias para “sail” en el bash:

cd pokedex && alias sail='bash vendor/bin/sail'

Entonces ya podríamos ejecutar Sail en la línea de comandos:

sail up -d

En términos generales, este comando empezaría a bajar todas las imágenes relacionadas a los servicios que vienen en el archivo de configuración de Sail que es un docker-compose.yml. El comando “sail up” es lo mismo si se ejecutará “docker-compose up -d” en términos de Docker.

Una vez bajada las imágenes de los contenedores, configuradas y desplegadas, ya podemos probar nuestro entorno que esta levantado en el browser, recordemos que Sail maneja el puerto 80 por lo que simplemente ponemos en nuestro browser “localhost”.

Laravel Sail utiliza las versiones de los servicios mas actuales, en el caso de PHP es la versión 8 y MySQL es la versión 8. Se puede configurar para que estos servicios utilicen la versión que tu quieras.

Para detener nuestro aplicación simplemente ejecutamos:

sail down

Si queremos reconstruir nuestros servicios:

sail build

Para saber los servicios que están desplegados:

sail

Conectarse al servicio de MySQL

Para conectarnos al servicio de MySQL, que es donde se ejecutará nuestra base de datos, simplemente el IDE se tiene que conectar a “localhost” por el puerto 3306.

En nuestra aplicación necesitaríamos cambiar el archivo de configuración “.env” y donde dice “DB_HOST” le pondriamos “mysql”. Esto es propio de Docker Compose ya que usa el nombre del servicio para comunicarse entre servicios.

DB_CONNECTION=mysql
#DB_HOST=localhost
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=pokedex_laravel
DB_USERNAME=sail
DB_PASSWORD=password

Ejecutando comandos en nuestra aplicación con Sail

Muchas de las veces queremos ejecutar comandos artisan, esto suelen ser que queramos crear modelos, controllers, migraciones etc. Para hacer esto con Sail ejecutaríamos:

sail artisan [comando artisan]

Ejemplo:

sail artisan key:generate

Para ejecutar comandos “node” o “npm”:

sail npm run dev

En el caso extraordinario que queramos entrar al bash del contenedor de la aplicación ejecutaríamos:

sail shellsail root-shell

Si queremos iniciar un sesión Laravel Tinker:

sail tinker

Cambiando la versión de PHP

Cuando ejecutamos Sail, la primera vez nos genera un archivo “docker-compose.yml”. Este contiene toda la configuración de los servicios que estamos ejecutando en nuestra aplicación, por default como antes se mencionó, Sail ejecuta estos servicios con la versión mas actual, en el caso de PHP y MySQL sera la versión 8.

Pero que pasa si yo por ejemplo quiero la versión 7.4 de PHP, para esto modificaremos lo siguiente del archivo “docker-compose.yml”:

version: '3'
services:
laravel.test:
build:
#context: ./vendor/laravel/sail/runtimes/8.0
context: ./vendor/laravel/sail/runtimes/7.4

dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
#image: sail-8.0/app
image: sail-7.4/app

Laravel Sail solo soporta las versiones 8.0 y 7.4 de PHP

Una vez terminado de configurar nuestro “docker-compose.yml”, tendríamos que reconstruir nuestros contenedores, entonces ejecutamos:

sail build --no-cache

sail up -d

Como podrán ver levantar un entorno de desarrollo con Laravel es muy fácil, si se requiere mas personalización se tendría que usar Docker y Docker Compose en lugar de Sail.

Sail es una buena alternativa y vino a aligerar la carga de montar un entorno de desarrollo en nuestro equipo.

El próximo capítulo desarrollaremos nuestras migraciones, controllers, modelos y rutas.

Si quieres saber mas detalles de Laravel Sail puedes revisar la documentación:

Si quieres saber mas de Docker:

--

--

Chris Lopez
Chris Lopez

Written by Chris Lopez

Laravel, PHP, Python, Js, Vue Developer

No responses yet