簡體   English   中英

在Docker中使用Erlang Observer App和遠程Elixir Phoenix服務器

[英]Using the Erlang Observer App with a remote Elixir Phoenix server inside Docker

我想要做的是在本地運行Erlang Observer App然后連接到生產中運行我的Elixir / Phoenix應用程序的遠程Docker容器。

我遇到的問題是無法連接。

根據我的研究,我似乎需要在啟動Phoenix服務器之前知道Docker鏡像的IP地址,以便我可以像這樣啟動它:

iex --name my_app@10.20.57.123 -S mix phoenix.server

我不確定是否需要cookie,所以我也試過了

iex --name my_app@10.20.57.123 --cookie random_cookie -S mix phoenix.server

我嘗試過使用主機名而不是IP地址,這似乎不起作用。

一旦我運行了那么我希望像這樣運行Observer

erl -name observe@127.0.0.1 -setcookie random_cookie -run observer

或者,使用IEx

iex --name observe@127.0.0.1 --cookie random_cookie

iex> :observer.start()

我可以在不需要知道IP地址的情況下啟動Phoenix服務器,並且仍然能夠與Observer遠程連接嗎?

在使用此shell命令構建它時,我可以弄清楚docker鏡像的IP地址是什么

ip addr | grep -Eo 'inet (.*) scope global' | grep -Eo '[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}'

但無法弄清楚如何將此命令用於啟動Phoenix服務器。

我知道有一個可能的解決方案,啟動具有靜態IP地址的docker鏡像,但我無法使用我的設置設置靜態IP地址。

任何幫助表示贊賞。

我可以在不需要知道IP地址的情況下啟動Phoenix服務器,並且仍然能夠與Observer遠程連接嗎?

是的 ,您可以使用DNS。 當然,您至少需要知道運行Erlang節點的服務器的完全限定域名。 雖然不像Erlang節點短名稱(例如node@server )那么短,但它仍然可能比IP地址更好。 我對Docker不太熟悉,因此堅持使用IP地址可能更容易。 在這種情況下,它並沒有給你帶來太多。

一旦我運行了那么我希望像這樣運行Observer

 erl -name observe@127.0.0.1 -setcookie random_cookie -run observer 

你在運行這個命令的服務器是什么? 它需要在具有Wx支持的Erlang編譯的機器上。 如果這是在與您運行鳳凰服務器的機器不同的機器上,這將無法工作(這是我理解的情況)。

你需要做這樣的事情:

  1. 在運行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 
  2. 在您的計算機上,啟動一個運行觀察者應用程序的隱藏Erlang節點:

     $ iex -name debug@127.0.0.1 -setcookie <phoenix-server-cookie> -hidden -run observer 

    該應用程序應該打開,您應該能夠選擇運行鳳凰服務器的節點。

資料來源: https//gist.github.com/pnc/9e957e17d4f9c6c81294

2017年2月20日更新

我寫了一個腳本,可以自動執行上述操作。 epmd知道的所有端口都轉發到localhost: https//github.com/Stratus3D/dotfiles/blob/master/scripts/tools/epmd_port_forwarder

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM