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 secret
lo que resulta en este error:
Protocol 'inet_tcp': register/listen error: epmd_close
Esto parece deberse a que el epmd
demonio 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.