よくある「Proxy環境下」でハマった話。
ElixirのPhoenix Frameworkの開発環境を作ろうと思い、Dockerfileを用意。
だが、同じDockerfileを使ってイメージ/コンテナを作成したにも関わらず、ホストマシンのOSの違いで「mix local.hex」コマンドが実行できる/できないが発生した。
どちらのDockerコンテナ内からも、curl、wget、aptの実行は可能だった。
利用したホストマシンと実行結果は以下の通り。
失敗時のエラー内容は、以下の通り。
コンテナ内で設定しているProxyを経由して外に出ようとしているが、何かしらの要因で外に出られない様子。
# mix local.hex ** (Mix) httpc request failed with: {:failed_connect, [{:to_address, {'proxy.local.jp', 8080}}, {:inet, [:inet], :nxdomain}]} Could not install Hex because Mix could not download metadata at https://repo.hex.pm/installs/hex-1.x.csv.
エラーメッセージ中の「 {'proxy.local.jp', 8080}」はProxyサーバとポートの組み合わせ。
環境変数にhttp_proxyやhttps_proxyを追加する前は「{'repo.hex.pm', 443}」だったので、メッセージの1行目はto_addressに到達できない、という意味合いのエラーメッセージと考えられる。
結論:
ホストマシンが「Ubuntu 19.04」側のコンテナで、「/etc/resolv.conf」を修正したことで、エラーが解消できた。