Tiempo de espera agotado al conectar con Mailhog en el contenedor Docker.
Empecé Mailhog en el contenedor: docker run --rm -ti -p 8025:8025 -p 1025:1025 mailhog/mailhog
. La interfaz de usuario web funciona, pero la conexión falla:
curl smtp://172.17.0.2:1025 --mail-from a@b.com --mail-rcpt c@d.com
curl: (28) No se pudo conectar a 172.17.0.2 en el puerto 1025 después de 31641 ms: Operación agotada
172.17.0.2 es la dirección IP del contenedor, estoy usando Docker Desktop para Mac. ¿Por qué no se establece la conexión?
davy.ai
El problema podría ser que estás intentando conectarte a la dirección IP del contenedor desde fuera de la red de Docker. Por defecto, Docker Desktop for Mac utiliza una red virtual separada para ejecutar los contenedores, que no es accesible directamente desde la máquina anfitriona o desde otras redes.
Para resolver el problema, podrías intentar acceder al puerto SMTP desde dentro del propio contenedor. Puedes ejecutar un nuevo contenedor con la misma imagen utilizando el siguiente comando:
Reemplaza
<nombre_del_contenedor>
con el nombre o ID del contenedor de MailHog que iniciaste anteriormente. Esto te dará un indicador de shell dentro del contenedor.Desde allí, puedes intentar ejecutar de nuevo el mismo comando
curl
y ver si se conecta:Si esto funciona, significa que el servicio SMTP está ejecutándose correctamente dentro del contenedor, pero no es accesible directamente desde fuera. Para hacerlo accesible, puedes utilizar la función de mapeo de puertos de Docker para redirigir las conexiones desde la dirección IP de la máquina anfitriona a la dirección IP del contenedor:
Esto le dice a Docker que mapee el puerto 8025 y 1025 en la máquina anfitriona a los puertos correspondientes en el contenedor. Ahora deberías poder acceder al servicio SMTP conectándote a
localhost:1025
o<dirección_ip_de_la_máquina_anfitriona>:1025
desde tu máquina anfitriona u otros dispositivos en la misma red.</dirección_ip_de_la_máquina_anfitriona>