我正在运行一个“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 :(得分:2)
您无法使用localhost:9200
容器中的web
连接到elasticsearch
容器。您可以定义链接或仅使用服务名称(默认情况下映射):
curl elasticsearch:9200
链接允许您定义额外的别名,通过该别名可以从其他服务访问服务。它们不需要启用服务进行通信 - 默认情况下,任何服务都可以通过该服务的名称访问任何其他服务。
答案 1 :(得分:1)
您应该尝试卷曲elasticsearch:9200
,而不是localhost:9200
。主机名elasticsearch应位于Web容器上的hosts文件中。