2016-12-29 9 views
0

2つの異なるWebアプリケーションを実行する2つのコンテナを作成しました。私はホスト名に応じて正しいコンテナにリクエストをリダイレクトするnginxプロキシを持つ3番目のコンテナを作成しようとしています。私のNginxの設定は、私がnginxの公式画像を実行しているときに正しいと思われ、コンテナ内で手動でプロキシ設定のデフォルト設定ファイルを変更しています。他のドッカーコンテナにリンクされたNginxプロキシ

私の2つのWebアプリケーションコンテナがすでに実行されている、と私は次のようにプロキシコンテナを開始:私が考えるほどクリーンな方法を行うには

docker run -i -t --link webapp1 --link webapp2 -p 80:80 nginx /bin/bash 

を、私はコンテナを作成するためにDockerfileを作成したい、と構築時にローカルdefault.confファイルをコンテナに渡します。

これは私のnginxのプロキシ設定ファイルである:

server { 
    listen  80; 
    server_name www.webapp1.ch; 

    location/{ 
     proxy_pass http://webapp1/; 
    } 
} 

server { 
    listen  80; 
    server_name www.webapp2.ch; 

    location/{ 
     proxy_pass http://webapp2/; 
    } 
} 

およびプロキシドッカーファイル:

# Set the base image to use to Ubuntu 
FROM nginx:latest 

# Set the file maintainer (your name - the file's author) 
MAINTAINER Me 


# Update the default application repository sources list 
RUN apt-get update && apt-get install -y \ 
     wget \ 
     vim 

RUN rm /etc/nginx/conf.d/default.conf 
COPY default /etc/nginx/conf.d/default.conf 
CMD /etc/init.d/nginx restart 

しかし、私はそれを構築しようとしているとき、残念ながら、コンテナは知りませんwebapp1とwebapp2のコンテナはまだリンクされていないので/ ipをアドレス指定します。このエラーが表示されます:

Step 7 : RUN /etc/init.d/nginx restart 
---> Running in aef974e80e74 
Restarting nginx: nginx2016/12/29 17:07:17 [emerg] 11#11: host not found in upstream "webapp1" in /etc/nginx/conf.d/default.conf:6 
nginx: [emerg] host not found in upstream "webapp1" in /etc/nginx/conf.d/default.conf:6 
nginx: configuration file /etc/nginx/nginx.conf test failed 

私は間違っていますが、それを修正するための最良の方法はありますか?

答えて

0

リンクを使用すると、legacy機能です。User defined networksを使用する必要があります。

sudo docker network create mynetwork 
docker run -d --network mynetwork -p 80:80 -v /path/to/nginx/config/default.conf:/etc/nginx/conf.d/default.conf nginx 

それから私は私が最近docker runコマンドでuser defined networkを作成し使用していました。

もう1つ私がそこで行ったことは、私はmounted私のnginx configの代わりに新しい画像を構築します。

利点の1つは、同じユーザ定義ネットワーク内のコンテナ名に基づいて自動dnsです。今すぐ戻ってあなたnginx問題へ

proxy_pass http://webapp2:port/; 

私はあなたが同じドッキングウィンドウのホスト上のすべての3個のコンテナを実行している推測しているが、それらはすべてので、あなたのnginx reverse proxy設定でポートを提供しなければならないport 80上で実行されているカント。

+0

ありがとうFarhad、私はあなたの答えを確認したと私は示唆したようにネットワークを作成して修正しました。今は正常に動作しています – Fab

関連する問題