2016-05-11 14 views
5

Dockerでホストされているフロントエンド専用のWebアプリケーションがあります。バックエンドはすでに存在していますが、「カスタムIP」アドレスを持っているので、アクセスするためにローカルの/ etc/hostsファイルを更新しなければなりませんでした。私のローカルマシンからは問題なくバックエンドAPIにアクセスできます。Dockerの実行結果が「上流にホストが見つかりません」

しかし、問題は、Dockerが何らかの形でこの「カスタムIP」を解決できないということです。たとえホストがコンテナ(image?)/ etc/hostsファイルに書き込まれていても問題です。

ドッカーコンテナが起動すると、私は

$ docker run media-saturn:dev 
2016/05/11 07:26:46 [emerg] 1#1: host not found in upstream "my-server-address.com" in /etc/nginx/sites/ms.dev.my-company.com:36 
nginx: [emerg] host not found in upstream "my-server-address.com" in /etc/nginx/sites/ms.dev.my-company.com:36 

このエラーが表示され、私は私がマシンにsshをするときの/ etc/hostsこの

# install wget 
RUN apt-get update \ 
    && apt-get install -y wget \ 
    && rm -rf /var/lib/apt/lists/* 

# The trick is to add the hostname on the same line as you use it, otherwise the hosts file will get reset, since every RUN command starts a new intermediate container 
# it has to be https otherwise authentification is required 
RUN echo "123.45.123.45 my-server-address.com" >> /etc/hosts && wget https://my-server-address.com 

のように、Dockerfileにコマンドを経由してファイルを更新/ etc/hostsの現在の内容を確認すると、 "123.45.123.45 my-server-address.com"という行が表示されます。

誰もがこれで私を助けることができますか?私はDocker newbeeです。

+0

どのようなエラーメッセージが表示されますか?プロキシの背後にいますか? – VonC

+0

@VonCエラーメッセージは、 '/etc/nginx/sites/ms.dev.topmonks.com:36:'の上流にある" ms-test.internal.pricefx.eu "にエラーメッセージが見つかりませんでした。プロキシがありません –

+0

画像を作成するのにどのようなコマンドを使用していますか? (意味、 'wget ms-test.internal.pricefx.eu'が成功した' media-saturn:dev'というタグ付き画像を構築しましたか?) – VonC

答えて

1

私はこれを解決しました。遊びには2つのものがあります。

1つはローカルで動作し、もう1つはDocker Cloudでどのように動作するかです。 Dockerfileが

  • ビルドイメージに位置しているプロジェクトのルートに

    ローカルワークフロー

    • CD、:docker run -it --add-host="my-server-address.com:123.45.123.45" -p 80:80 media-saturn:dev

    ドッカークラウドワークフロー:docker build -t media-saturn:dev .

  • を建てるイメージを実行

    • この
    • のように、あなたのStackfileにextra_hostディレクティブを追加して、変更が

      extra_hostsを反映するように、ドッカークラウドに再デプロイをクリックします。

      • 「私のサーバーアドレス。 com:123.45.123.45 '

    最適化のヒント

    • 通常、あなたがnode_modeluesbower_modulestmp
    • などのフォルダを追加したい
    • デーモンドッキングウィンドウにデータを送信するプロセスをスピードアップするために、できるだけ多くのフォルダを無視.dockerignoreファイル
    • を追加
    • 私の場合、tmpには約1が含まれています。3GBの小さなファイルなので、それを無視するとプロセスが大幅にスピードアップします
  • 関連する問題