Docker y Laravel Sail desde cero
Instala Docker, dockeriza una aplicación PHP a mano con Compose y entiende qué hace Laravel Sail por debajo para arreglarlo cuando falla.
- Lecciones
- 10
- Lectura
- 105 min
- Nivel
- Principiante
- Actualizado
- 01 Docker para PHP y Laravel: por qué aprenderlo antes de usar Laravel Sail
- 02 Comandos básicos de Docker: docker pull, docker run, docker ps, docker exec y docker logs
- 03 Dockerfile para PHP-FPM: crear tu propia imagen de PHP con Composer
- 04 Nginx, PHP-FPM y MySQL en Docker Compose: compose.yaml, healthcheck y .env
Hola, bienvenido. Empezamos un nuevo curso en CursosDesarrolloWeb.es, y en este curso vamos a aprender Docker desde cero pensando en PHP y Laravel, para terminar entendiendo qué hace Laravel Sail por debajo y saber arreglarlo cuando falla. Es un curso gratuito y práctico, con cada comando y cada archivo completos.
Sail es la forma más sencilla de trabajar con Laravel en local, y Docker es lo mejor que tenemos para no instalar PHP ni MySQL en la máquina. El problema es que sail up funciona hasta que deja de funcionar: un día el puerto 3306 está ocupado, otro día Laravel no conecta con MySQL, en WSL2 aparecen permisos raros en storage/ o la base de datos sigue pidiendo una contraseña que ya cambiaste. Y si solo conoces Sail, no sabes por dónde empezar a mirar, cosa que es normal, porque Sail está pensado precisamente para que no tengas que mirar.
Por debajo, Sail es Docker: un compose.yaml y un script que llama a docker compose. Así que vamos a hacer el camino al revés. Primero montamos a mano lo mismo que Sail automatiza, con PHP-FPM, Nginx y MySQL en Docker Compose, y después abrimos Sail para reconocer cada pieza.
¿Qué vamos a construir?
El curso tiene 10 lecciones en 2 secciones, y cada sección tiene su proyecto.
En la primera sección dockerizamos a mano tasks/, un gestor de tareas mínimo en PHP con PDO que vive siempre dentro de un contenedor. Practicamos los comandos básicos de Docker, escribimos un Dockerfile propio para PHP-FPM con Composer y levantamos el stack completo con Compose: Nginx delante, MySQL con su healthcheck, un volumen para que los datos sobrevivan, bind mounts para editar el código sin reconstruir la imagen y la red que permite que cada servicio encuentre a los demás por su nombre.
Y aquí viene lo bueno. En la segunda sección creamos sail-app/, un proyecto Laravel 13 con Sail, y lo abrimos pieza a pieza: comparamos su compose.yaml con el nuestro, personalizamos su Dockerfile, añadimos Redis con sail:add y vemos a qué comando de docker compose equivale cada comando de sail. Terminamos con los errores más habituales de Sail, cada uno con la pieza que lo explica y el comando que lo arregla.
Trabajamos con Docker Engine 29.8 en Linux o Docker Desktop 4.92 en macOS y Windows, Docker Compose 5.5, PHP 8.5, Composer 2.10, Nginx 1.30, MySQL 8.4, Laravel 13 y Laravel Sail.
Hay 2 cosas que se quedan fuera del curso. Docker en producción, con despliegue y CI/CD, no lo vamos a ver: lo tienes en el curso Laravel de Cero a Producción con CI/CD (se abre en una pestaña nueva). Tampoco conectamos Xdebug con el editor: veremos que Sail ya lo trae y cómo se activa, y para VS Code, PhpStorm o Zed tienes un curso de cada uno en la plataforma.
Para quién es
Si usas Sail cada día sin saber qué hay debajo, o nunca has tocado Docker y sigues con XAMPP, Laragon, Herd o un PHP instalado a mano, este curso es para ti. Necesitas PHP básico, manejarte en la terminal y saber qué hace composer install; si Composer te pilla de nuevas, tienes el Curso de Composer desde cero (se abre en una pestaña nueva) en la plataforma. No hace falta saber Laravel para la primera sección ni tener Docker instalado: lo instalamos en la primera lección.
La idea de fondo es que Sail deje de ser magia: cuando entiendes lo que hace por ti, el día que algo falla sabes dónde mirar. No vamos a complicarnos la vida, pero sí vamos a hacer las cosas bien, para que lo apliques en tu día a día desde el minuto cero.
Así que, si te interesa, te espero dentro del curso. Espero que te haya gustado esta introducción y nos vemos dentro. Un saludo.