Как соединить контейнер 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)