Как соединить контейнер elasticsearch с контейнером Django в docker

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

Локальная конфигурация:

  • Django версия - 3.2.3
  • elasticsearch - 7.13.3 (windows)
  • django-elasticsearch-dsl==7.2.0
  • django-elasticsearch-dsl-drf==0.22.1

Dockerfile

FROM python:3

ENV PYTHONUNBUFFERED 1

RUN mkdir /app 

WORKDIR /app

COPY ./requirements.txt /app/requirements.txt

RUN pip install -U pip

RUN pip install -r requirements.txt

COPY . /app

Docker-compose.yml

version: '3.7'

services:
  es:
    image: elasticsearch:7.13.3
    environment:
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m -Dlog4j2.disable.jmx=true"
      - discovery.type=single-node
      - VIRTUAL_HOST=localhost
    ports:
      - "9200:9200"
    networks:
      - test-network
    container_name: es
  web:
    build: .
    command: bash -c "sleep 1m && python manage.py makemigrations && python manage.py migrate && python manage.py migrate --run-syncdb && python manage.py runserver 0.0.0.0:8000"
    volumes:
      - .:/app
    networks:
      - test-network
    ports:
      - "8000:8000"
    depends_on:
      - es
networks:
  test-network:
    driver: bridge

Когда я запускаю это, я могу получить доступ к порту 8000 на локальном хосте со всеми возможностями приложения Django, но когда я пытаюсь получить доступ к elasticsearch, он выдает ошибку соединения. Я также могу получить доступ к порту:9200 извне.

Ошибка:

elasticsearch.exceptions.ConnectionError: ConnectionError(<urllib3.connection.HTTPConnection object at 0x7ff0cf798400>: Failed to establish a new connection: [Errno 111] Connection refused) caused by: NewConnectionError(<urllib3.connection.HTTPConnection object at 0x7ff0cf798400>: Failed to establish a new connection: [Errno 111] Connection refused)
Вернуться на верх