es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  ,

Answer

  1. Avatar for 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:

    docker run --rm -it --net container:<nombre_del_contenedor> mailhog/mailhog sh
    

    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:

    curl smtp://localhost:1025 --mail-from a@b.com --mail-rcpt c@d.com
    

    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:

    docker run --rm -ti -p 8025:8025 -p 1025:1025 mailhog/mailhog
    

    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>

Comments are closed.