Phoenixアプリをfly.ioにデプロイして
fly ssh console
でFlyのインスタンスのシェルに入った後に
app/bin/my_app remote
というコマンドでiexシェルに入れると公式で説明されていますが、手順通りにやってもうまくいかず、
Could not contact remote node {app_name}@{id}, reason: :nodedown. Aborting...
というエラー文が出て失敗します。
コミュニティーでも同じ経験をしている人が散見されたため、自分がうまくいった解決方法について共有します。
結論
env.sh.eexでELIXIR_ERL_OPTIONSの行を消せばとりあえず動きます。
rel/env.sh.eex
#!/bin/sh
ip=$(grep fly-local-6pn /etc/hosts | cut -f 1)
export RELEASE_DISTRIBUTION=name
export RELEASE_NODE=$FLY_APP_NAME@$ip
#export ELIXIR_ERL_OPTIONS="-proto_dist inet6_tcp" <- commented out
ドキュメントではELIXIR_ERL_OPTIONSをつけた形で書かれていたため、気づきづらく罠?かと思いました。
ELIXIR_ERL_OPTIONSはクラスタリングする際に使われるのでしょうか。ご存知の方いらしたらご教授いただければ幸いです。