Comandos de Laravel Sail y su equivalente en docker compose
Hola, bienvenido. Llevamos 2 lecciones escribiendo sail delante de todo, y en esta vamos a abrir el script para comprobar que no hay magia. sail es un script de bash que lee el .env, comprueba que Docker está en marcha y le pasa cada comando a docker compose: up, down, ps o build tal cual, y php, composer, artisan o tinker como un docker compose exec -u sail laravel.test. Cuando sepas qué ejecuta cada uno, podrás usar Sail o Docker Compose según te convenga, y leer sus errores sabiendo de dónde salen.
En esta lección no cambiamos ningún archivo del proyecto: partimos de sail-app tal como lo dejamos en la lección anterior, con laravel.test, mysql y redis en marcha.
Cómo está hecho vendor/bin/sail
vendor/bin/sail es un lanzador que crea Composer y que ejecuta el script de verdad, vendor/laravel/sail/bin/sail. Son unas 700 líneas de bash, pero la mayoría es la ayuda y una rama por comando. Lo primero que hace, después de comprobar que estás en Linux o en macOS, es cargar tu .env y definir unas cuantas variables con su valor por defecto:
Fíjate en las 2 últimas líneas: aquí es donde salen el WWWUSER y el WWWGROUP que vimos en el compose.yaml, con tu UID y tu GID si no los has puesto en el .env. Y APP_SERVICE es el servicio donde se ejecutan los comandos, laravel.test, que también se puede cambiar desde el .env.
Después decide con qué binario va a hablar y, tras un bloque para usar archivos de Compose adicionales que aquí nos saltamos, comprueba que todo está en marcha:
SAIL_DOCKER_BINARY vale docker salvo que lo cambies, así que Sail usa docker compose y solo cae en el antiguo docker-compose, con guion, si tu Docker no tiene el plugin de Compose. Después ejecuta docker info, el mismo comando que usa el script de laravel.build, y si falla, se para ahí. Por eso, con Docker parado, cualquier comando de Sail responde solo esto:
Y si Docker funciona pero los contenedores del proyecto están parados, EXEC pasa a valer no, y los comandos que tienen que entrar en el contenedor se niegan con otro mensaje. Esto es lo que da sail artisan --version después de un sail stop:
- 02Los que pasan tal cual y los que entran en el contenedor
- 03Sail frente a docker compose
- 04Cuándo usar docker compose directamente
- 05Xdebug en Laravel Sail
¿Ya lo habías pedido o entras desde otro dispositivo? Escribe el mismo email: recuperas tu acceso y tu avance.
Al entrar desde el enlace te apuntamos a los avisos de cursos gratuitos. Te das de baja cuando quieras.
¿Ya tienes cuenta? Entra