Saltar al contenido
Curso Docker y Laravel Sail desde cero
10/10 Laravel Sail por dentro Laravel Sail no funciona: port is already allocated, Permission denied y SQLSTATE[HY000] [2002]
Tu lectura Quedan 10 min
Lección 10 de 10 · Laravel Sail por dentro

Laravel Sail no funciona: port is already allocated, Permission denied y SQLSTATE[HY000] [2002]

10 min de lectura Docker Engine 29.8

Hola, bienvenido. Llegamos a la última lección del curso, y es la que vas a querer tener a mano el día que algo falle. Cuando Laravel Sail no funciona, el error casi siempre viene de una de las piezas que hemos montado a mano: un puerto que ya está usando otro programa, un MySQL que todavía no acepta conexiones, un volumen con datos de otra configuración o un usuario que no es el tuyo. En esta lección vamos a ver los mensajes más habituales, cada uno con su causa, el comando que lo confirma y el que lo arregla, y con la lección donde montamos la pieza que lo explica.

Los mensajes que vas a ver salen de provocar cada error sobre sail-app, copiados tal cual. Algunas soluciones tocan el .env o el compose.yaml, y en cada caso verás qué línea cambia.

Qué mirar primero: docker compose ps y docker compose logs

Antes de buscar el mensaje concreto, hay 2 comandos que te dicen por dónde va el problema. El primero es docker compose ps, que con Sail lanzas como sail ps, para ver en qué estado está cada contenedor. Con --format puedes quedarte solo con el servicio y su estado:

Terminal
sail ps --format "table {{.Service}}\t{{.Status}}"
Salida
SERVICE STATUS laravel.test Up 32 seconds mysql Up 33 seconds (healthy) redis Up 33 seconds (healthy)

Así es como tiene que estar: los 3 servicios en Up, y MySQL y Redis en healthy, gracias a su healthcheck. Si falta un servicio, es que no ha llegado a arrancar, y sail ps -a te enseña también los contenedores parados con su código de salida. Si MySQL sigue en health: starting, todavía se está inicializando.

El segundo comando es docker compose logs, con el servicio que falla, que te enseña lo que ha escrito ese contenedor al arrancar:

Terminal
sail logs --tail 50 mysql

Son los comandos de la lección Redes y puertos en Docker Compose, y los comandos del día a día, que Sail pasa tal cual a Docker Compose. Si los lanzas con docker compose directamente, verás antes los 2 avisos de WWWUSER y WWWGROUP de la lección anterior, que aquí no afectan.

Lo que queda de esta lección
  1. 02Error "port is already allocated" o "address already in use" al hacer sail up
  2. 03SQLSTATE[HY000] [2002] Connection refused
  3. 04SQLSTATE[HY000] [1045] Access denied for user 'sail'
  4. 05Permission denied en storage/logs/laravel.log
  5. 06Call to undefined function: falta una extensión de PHP
  6. 07Docker or Podman is not running
  7. 08Hasta aquí el curso
Sigue leyendo gratis Este curso es gratuito. Déjanos tu email y te enviamos un enlace para leerlo entero, junto con el resto de cursos gratuitos.

¿Ya lo habías pedido o entras desde otro dispositivo? Escribe el mismo email: recuperas tu acceso y tu avance.