2017-01-23 50 views
1

我正在運行「elasticsearch」容器。我可以捲曲容器並獲得結果,但是當我嘗試與我的「web」容器內的容器進行通信時,它會拒絕連接。碼頭集裝箱之間的通信故障

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

@Rao我加了。 –

回答

2

您不能在web容器內使用localhost:9200連接到elasticsearch容器。你可以定義一個鏈接或只使用該服務名(默認情況下映射):

curl elasticsearch:9200 

鏈接允許你定義額外的別名,通過該服務是從其他服務訪問。他們不需要啓用服務進行通信 - 默認情況下,任何服務都可以以該服務的名稱到達任何其他服務。

另見Docker Compose Links

1

你應該試着捲曲elasticsearch:9200,不localhost:9200。主機名elasticsearch應該位於Web容器上的主機文件中。