2017-01-23 16 views
1

私は "elasticsearch"コンテナを実行しています。私はコンテナをカールして結果を得ることができますが、私の "ウェブ"コンテナ内からコンテナと通信しようとすると、接続を拒否します。ドッカーコンテナ間の通信に問題があります

docker-compose up 
curl localhost:9200 // works. 
curl docker-compose run web curl localhost:9200 // connection refused. 

docker-compose.yml

version: '2' 
services: 
    web: 
    build: 
     context: . 
     dockerfile: Dockerfile 
    volumes: 
     - .:/src 
    ports: 
     - "5000:5000" 
    depends_on: 
     - elasticsearch 

    elasticsearch: 
    image: elasticsearch:5.1.2 
    ports: 
     - "9200:9200" 

Dockerfile

FROM python:3.5 

ADD . /src 
WORKDIR /src 

RUN pip install -r requirements.txt 

CMD python project/wsgi.py 
+0

あなたも 'Dockerfile'を追加したいと思います参照してください? – Rao

+0

@ラオ追加しました。 –

答えて

2

elasticsearchコンテナに接続するためにwebコンテナ内のlocalhost:9200を使用することはできません。あなたは、リンクを定義するか、単に(デフォルトでマッピングされた)サービス名を使用することができます。

curl elasticsearch:9200 

リンクを使用すると、サービスが別のサービスから到達可能であることにより、余分なエイリアスを定義することができます。サービスの通信を可能にする必要はありません。デフォルトでは、どのサービスもそのサービスの名前で他のサービスに到達することができます。

またDocker Compose Links

1

あなたはlocalhost:9200elasticsearch:9200をカールしないようにしようとしなければなりません。ホスト名elasticsearchは、Webコンテナのhostsファイル内にある必要があります。

関連する問題