Eu tenho um aplicativo Elixir em execução dentro de um contêiner Docker (no meu laptop). A aplicação Elixir foi executada com o seguinte 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
E o contêiner do Docker expõe as seguintes portas:
0.0.0.0:4000->4000/tcp, 0.0.0.0:4369->4369/tcp, 0.0.0.0:9000->9000/tcp
Então, tento conectar usando um shell IEx usando o seguinte comando:
iex --name [email protected] --cookie secret
que resulta nesse erro:
Protocol 'inet_tcp': register/listen error: epmd_close
Isto parece ser porque o daemon local epmd
está tentando alocar para a porta 4369, no entanto, isso já está alocado para o contêiner Docker.
Em seguida, alterei a porta do EPMD da seguinte forma:
ERL_EPMD_PORT=4370 iex --name [email protected] --cookie secret
e eu consigo abrir a sessão IEx. No entanto, não consigo encontrar o nó em execução no contêiner do Docker:
iex([email protected])1> Node.connect :'[email protected]'
false
Não sei como resolver isso. Eu estava seguindo esta postagem no blog .