2017-02-10 4 views
3

ローカルでErlang Observer Appを実行して、本番環境でElixir/Phoenixアプリケーションを実行しているリモートDockerコンテナに接続します。Docker内のリモートElixir PhoenixサーバーでのErlang Observerアプリケーションの使用

私が抱えている問題は、接続できません。

私の研究から、私が、私はそうのようにそれを始めることができるように、フェニックス・サーバを起動する前に、ドッカーイメージのIPアドレスを知る必要があると思わ:

iex --name [email protected] -S mix phoenix.server

私はわからないんだけど私も

iex --name [email protected] --cookie random_cookie -S mix phoenix.server

を試してみたクッキーが必要かどうか、私が代わりに動作していないようでしたIPアドレスのホスト名を使用してみました。

私はその後、私はこの

erl -name [email protected] -setcookie random_cookie -run observer

あるいは、IEX

iex --name [email protected] --cookie random_cookie 

iex> :observer.start() 

と同じようにオブザーバーを実行することを期待実行すると、私はIPアドレスを知らなくても、フェニックス・サーバを起動することができていたら、それでもObserverとリモートで接続することはできますか?

私は、このシェルコマンド

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}'

でそれを構築する時にIPアドレスがドッキングウィンドウの画像のものであろうかを把握することができます。しかし起動するコマンドでこれを配置する方法を見つけ出すことはできません

Phoenixサーバー。

固定IPアドレスを持つドッカーイメージを起動する可能性のある解決策がありますが、セットアップで静的IPアドレスを設定できません。

何か助けていただければ幸いです。

+0

サーバのFQDNを代わりに使用できますか?あなたの質問には、フェニックスがコマンドで始まっていますか? – Stratus3D

答えて

1

IPアドレス を知らなくても、Phoenixサーバーを起動できますが、引き続きObserverにリモート接続できますか?

はいとすることができます。もちろん、Erlangノードを実行しているサーバーの完全修飾ドメイン名を知る必要があります。 Erlangノードの短縮名(例えば[email protected])と同じくらい短いわけではありませんが、IPアドレスよりも優れている可能性があります。私はDockerにあまり慣れていないので、IPアドレスをつけるほうが簡単かもしれません。このような状況では、それはあなたの全体をたくさん得ることはありません。

私が実行している、私はあなたがこのコマンドを実行しているのは何のサーバーこの

erl -name [email protected] -setcookie random_cookie -run observer 

のようなオブザーバーを実行することを期待することをしたら? ErlangがWxサポートでコンパイルされたマシン上に存在する必要があります。これがあなたのPhoenixサーバを実行しているマシンとは別のマシンにある場合、これは動作しません(これが私の場合のことです)。

あなたが代わりにこのような何かをする必要があります。

  1. コンテナで実行鳳凰

    $ ssh phoenix-host "epmd -names" 
    epmd: up and running on port 4369 with data: 
    name some_phoenix_node at port 58769 
    

    注EPMDポートにEPMD自体のポートとのポートを探しますあなたがデバッグに興味があるノード。オブザーバーのアプリを実行している隠されたErlangのノードを起動し、あなたのマシン上で

    $ ssh -L 4369:localhost:4369 -L 58769:localhost:58769 phoenix-host 
    
  2. :あなたが転送見つけポートと鳳凰のホストに再接続し

    $ iex -name [email protected] -setcookie <phoenix-server-cookie> -hidden -run observer 
    

    アプリを開く必要があり、あなたがする必要がありますphoenixサーバーを実行しているノードを選択することができます。

出典:https://gist.github.com/pnc/9e957e17d4f9c6c81294

アップデート2017年2月20日

私は、自動的に上記の操作を行うことができますスクリプトを書きました。すべてのポートepmdがローカルホストに転送されます:https://github.com/Stratus3D/dotfiles/blob/master/scripts/tools/epmd_port_forwarder

関連する問題