Conexión de un Elixir/Erlang local a una aplicación en ejecución dentro de un contenedor Docker

Conexión de un Elixir/Erlang local a una aplicación en ejecución dentro de un contenedor Docker

Tengo una aplicación Elixir ejecutándose dentro de un contenedor Docker (en mi computadora portátil). La aplicación Elixir se ejecutó con el siguiente comando:

iex \
  --name [email protected] \
  --cookie secret \
  --erl '-kernel inet_dist_listen_min 9000'  \
  --erl '-kernel inet_dist_listen_max 9000' \
  -S mix phx.server

Y el contenedor Docker expone los siguientes puertos:

0.0.0.0:4000->4000/tcp, 0.0.0.0:4369->4369/tcp, 0.0.0.0:9000->9000/tcp

  • 4000 para el servidor Phoenix
  • 4369 para EPMD
  • 9000 para el nodo VM

Luego intento conectarme usando un shell IEx usando el siguiente comando:

iex --name [email protected] --cookie secretlo que resulta en este error: Protocol 'inet_tcp': register/listen error: epmd_close

Esto parece deberse a que el epmddemonio local está intentando asignar el puerto 4369; sin embargo, este ya está asignado al contenedor Docker.

Luego cambié el puerto EPMD así:

ERL_EPMD_PORT=4370 iex --name [email protected] --cookie secret

y logro abrir la sesión IEx. Sin embargo, no puedo encontrar el nodo que se ejecuta en el contenedor Docker:

iex([email protected])1> Node.connect :'[email protected]'
false

No estoy seguro de cómo solucionar esto. Estaba siguiendo estoentrada en el blog.

información relacionada