2017-03-01 12 views
0

現在、nginxをelasticsearchエンジンのプロキシとして使用しようとしています。 elasticsearchのための私のrunコマンドは次のとおりです。dockerとプロキシとしてnginxを使用

docker run --name elasticsearch_5.2.1 \ 
-d \ 
elasticsearch:5.2.1 

nginxのための1:

docker run --name nginx_1.11.10 \ 
-p 8200:80 \ 
-l elasticsearch_5.2.1:elasticsearch \ 
-v /my.conf:/etc/nginx/nginx.conf:ro \ 
-d \ 
nginx:1.11.10 

そして、私のnginxの設定ファイルがある:私が持っている

user nginx; 
worker_processes 1; 

error_log /var/log/nginx/error.log warn; 
pid  /var/run/nginx.pid; 


events { 
    worker_connections 1024; 
} 


http { 
    upstream elasticsearch_proxy { 
     server elasticsearch:9200; 
    } 

    server { 
     listen 80; 

     location/{ 
      proxy_pass http://elasticsearch_proxy; 
      proxy_http_version 1.1; 
      proxy_set_header Connection "Keep-Alive"; 
      proxy_set_header Proxy-Connection "Keep-Alive"; 
     } 
    } 
} 

しかし、nginxの開始、このエラー:

2017/03/01 23:45:47 [emerg] 1#1: host not found in upstream "elasticsearch:9200" in /etc/nginx/nginx.conf:15 
nginx: [emerg] host not found in upstream "elasticsearch:9200" in /etc/nginx/nginx.conf:15 

nginxがエイリアスでelasticsearchを見つけられないことを理解しています。しかし、私は問題を見つけることができません。

すでにこの問題を持っている人はありますか?

ありがとうございます。

答えて

2

あなたはユーザネットワークを作成する必要があります。

docker create network my_app 

そして、そのネットワーク上で両方のコンテナを実行します。

docker run --name elasticsearch_5.2.1 \ 
-d --network my_app \ 
elasticsearch:5.2.1 

docker run --name nginx_1.11.10 \ 
-p 8200:80 \ 
-l elasticsearch_5.2.1:elasticsearch \ 
--network my_app \ 
-v /my.conf:/etc/nginx/nginx.conf:ro \ 
-d \ 
nginx:1.11.10 

次に、名前がDNS名であるかのように正しく解決できるはずです。

+2

'docker-compose'はこれを簡単にします。 – jkinkead

+0

残念ながら私は同じエラーを受け取ります –

+1

@OresteVironホスト名 'elasticsearch_5.2.1'を使用するようにnginx.confに指示すればどうなりますか?または、最初のコンテナの '--name elasticsearch'ですか? –

関連する問題