在Docker内部使用带有远程Elixir Phoenix服务器的Erlang Observer应用程序

在Docker内部使用带有远程Elixir Phoenix服务器的Erlang Observer应用程序,docker,erlang,elixir,Docker,Erlang,Elixir,我试图做的是在本地运行,然后连接到一个远程Docker容器,该容器正在生产中运行我的Elixir/Phoenix应用程序 我遇到的问题是无法连接 根据我的研究,在启动Phoenix服务器之前,我似乎需要知道Docker映像的IP地址,以便我可以像这样启动它: iex——我的名字_app@10.20.57.123-S mix phoenix.server 我不确定是否需要饼干,所以我也试过了 iex——我的名字_app@10.20.57.123--cookie random\u cookie-S

我试图做的是在本地运行,然后连接到一个远程Docker容器,该容器正在生产中运行我的Elixir/Phoenix应用程序

我遇到的问题是无法连接

根据我的研究,在启动Phoenix服务器之前,我似乎需要知道Docker映像的IP地址,以便我可以像这样启动它:

iex——我的名字_app@10.20.57.123-S mix phoenix.server

我不确定是否需要饼干,所以我也试过了

iex——我的名字_app@10.20.57.123--cookie random\u cookie-S mix phoenix.server

我尝试使用主机名而不是IP地址,但似乎不起作用

一旦我开始跑步,我希望能像这样跑步

erl -name observe@127.0.0.1 -setcookie random_cookie -run observer
erl-名称observe@127.0.0.1-setcookie random\u cookie-运行观察者

或者,用IEx

iex --name observe@127.0.0.1 --cookie random_cookie

iex> :observer.start()
我可以在不需要知道IP地址的情况下启动Phoenix服务器,并且仍然能够远程连接到Observer吗

在使用这个shell命令构建docker映像的过程中,我可以计算出它的IP地址

ip地址| grep-Eo'inet(.*)作用域全局| grep-Eo'[0-9]{1,3}\[0-9]{1,3}\[0-9]{1,3}\[0-9]{1,3}'

但是,我不知道如何在命令中添加这个命令来启动Phoenix服务器

我知道有一种可能的解决方案,可以使用静态IP地址启动docker映像,但我无法使用我的设置设置静态IP地址

感谢您的帮助

我可以在不需要知道IP地址的情况下启动Phoenix服务器吗 还可以远程连接观察者吗

,您可以使用DNS。当然,您至少需要知道运行Erlang节点的服务器的完全限定域名。虽然不如Erlang节点短名称短(例如
node@server
)它仍然可能比IP地址更好。我对Docker不太熟悉,所以使用IP地址可能更容易。在这种情况下,它不会给你带来很多好处

一旦我开始跑步,我希望能像这样跑步

erl -name observe@127.0.0.1 -setcookie random_cookie -run observer
您在哪个服务器上运行此命令?它需要在使用Wx支持编译Erlang的机器上。如果这是在一个不同的机器上,而不是你正在运行你的Phoenix服务器,这将无法工作(这是我理解的情况)

您将需要这样做:

  • 在运行phoenix的容器上查找epmd端口

    $ ssh phoenix-host "epmd -names"
    epmd: up and running on port 4369 with data:
    name some_phoenix_node at port 58769
    
    请注意epmd本身的端口和您感兴趣的调试节点的端口。使用找到的端口重新连接到phoenix主机:

    $ ssh -L 4369:localhost:4369 -L 58769:localhost:58769 phoenix-host
    
  • 在您的计算机上,启动运行observer应用程序的隐藏Erlang节点:

    $ iex -name debug@127.0.0.1 -setcookie <phoenix-server-cookie> -hidden -run observer
    
    $iex-名称debug@127.0.0.1-setcookie-隐藏-运行观察者
    
    应用程序应该打开,您应该能够选择运行phoenix服务器的节点

  • 资料来源:

    更新日期2017年2月20日


    我写了一个脚本,可以自动执行上述操作。epmd知道的所有端口都被转发到本地主机:

    您可以改用服务器的FQDN吗?菲尼克斯是从你问题中的命令开始的吗?