2016-09-14 17 views
0

Docker、Nginx、Gunicorn、Djangoで設定を実行しようとしています。コンテナ間のDockerとNginx proxy_pass

は現在、私は正常にこのコマンドを使用してGunicornとDjangoアプリで自分のコンテナを実行するために管理:私はローカルホストに接続するとき

docker run --publish 8003:8000 user/app:latest 

は今:8003私は自分のアプリケーションの実行を参照してください。私はそれを実行

... 
http { 
    server { 
     listen 80; 

     location /app { 
     proxy_pass http://127.0.0.1:8003; 
     proxy_set_header Host $host; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     } 
     } 
} 
... 

:私はlocalhost/app

マイNginx.confファイルを参照するたびに、このアプリを指すように容器の中に私のnginxのを設定したいと思います。この時点で

は次のようになりますwith:

これは機能しません。私はこの問題を解決するためのアイデアのおかげで、私の頭を包み込むことはできません!

答えて

1

nginx内のローカルホストIP 127.0.0.1は、内部でnginxコンテナを参照しています。

  1. 単純なことは、「ホストモードネットワーキング」モードでnginxコンテナを実行することです。この時点で、127.0.0.1は実際にあなたのコンテナホストを参照しています。 the docsを参照してください。基本的には--network="host"を追加するだけで動作します。このシンプルさの欠点は、少し安全性が低いことです。

  2. また、--linkオプションを使用する場合は、the docsを参照してください。この方法では、nginxコンテナの中からDNS解像度を使って別のコンテナにアクセスできるので、proxy_passをリンクされた名前に更新します。補足として、docker-composeからこれを行うとかなり簡単になります。

関連する問題