2016-12-30 1 views
3

Я использую docker-compose для запуска приложений python flask и сервисов elasticsearch на сервере Linode.Docker - Elasticsearch - Не удалось установить новое соединение: [Errno 111] Connection reject ',))

Вот мой докер-compose.yml

version: '2' 

services: 
    elasticsearch: 
    build: config/elastic/ 
    ports: 
     - "9200:9200" 
     - "9300:9300" 
    environment: 
     ES_JAVA_OPTS: "-Xms1g -Xmx1g" 
    networks: 
     - docker_lr 
    web: 
    build: . 
    ports: 
     - "8000:8000" 
    networks: 
     - docker_lr 
    depends_on: 
     - elasticsearch 

networks: 
    docker_lr: 
    driver: bridge 

Вот elasticsearch Dockerfile

FROM elasticsearch:5 

ENV ES_JAVA_OPTS="-Des.path.conf=/etc/elasticsearch" 

CMD ["-E", "network.host=0.0.0.0", "-E", "discovery.zen.minimum_master_nodes=1"] 

Вот Dockerfile для веб https://github.com/mysticmode/LibreRead/blob/master/Dockerfile

Обе службы работают , который я могу проверить в браузере с моим: 8000 и: 9200

Но я не мог подключиться к elasticsearch по адресу: 9200 из моего кода приложения python.

r = requests.get('http://localhost:9200/lr_index/book_info/_search', data=payload) 

Он показывает эту ошибку

ConnectionError: HTTPConnectionPool(host='localhost', port=9200): Max retries exceeded with url: /lr_index/book_info/_search (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f5b13872250>: Failed to establish a new connection: [Errno 111] Connection refused',)) 

Может кто-то наставит меня? Благодаря!

ответ

5

Попробуйте это:

r = requests.get('http://elasticsearch:9200/lr_index/book_info/_search', data=payload) 

Вы запускаете python код в web контейнера справа? localhost относится к интерфейсу loopback того же контейнера.

Использование userdefined networks, которые осуществляют DNS для контейнеров в той же сети. Вот почему вы можете назвать контейнер elasticsearch по его названию.

+0

No:? Я получаю ту же ошибку с хостом, что и elasticsearch. ConnectionError: HTTPConnectionPool (host = 'elasticsearch, port = 9200): Максимальное количество попыток превышено с url:/_ingest/конвейер/вложение (вызвано NewConnectionError (' : Не удалось установить новое соединение: [Errno -2] Имя или услуга неизвестна ',)) ' – rnk

+0

Обратите внимание: [Errno -2] Имя или услуга неизвестна – rnk

+0

Пожалуйста, попробуйте к ping elasticsearch внутри обоих контейнеров. Оба должны преуспеть. –