在Docker内部使用带有远程Elixir Phoenix服务器的Erlang Observer应用程序
我试图做的是在本地运行,然后连接到一个远程Docker容器,该容器正在生产中运行我的Elixir/Phoenix应用程序 我遇到的问题是无法连接 根据我的研究,在启动Phoenix服务器之前,我似乎需要知道Docker映像的IP地址,以便我可以像这样启动它:在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
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服务器,这将无法工作(这是我理解的情况)
您将需要这样做:
$ 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
$ iex -name debug@127.0.0.1 -setcookie <phoenix-server-cookie> -hidden -run observer
$iex-名称debug@127.0.0.1-setcookie-隐藏-运行观察者
应用程序应该打开,您应该能够选择运行phoenix服务器的节点我写了一个脚本,可以自动执行上述操作。epmd知道的所有端口都被转发到本地主机:您可以改用服务器的FQDN吗?菲尼克斯是从你问题中的命令开始的吗?