【发布时间】:2022-01-06 06:23:51
【问题描述】:
从第一天起,我就遇到了连接 Elasticsearch 容器的问题。 首先我使用elasticsearch作为主机名,然后我尝试了容器名称web_elasticsearch_1,最后我为容器设置了一个静态IP地址并将其传递到我的配置文件中。
PYPI 包:
- django==3.2.9
- elasticsearch==7.15.1
- elasticsearch-dsl==7.4.0
docker-compose.yml
version: "3.3"
services:
web:
build:
context: .
dockerfile: local/Dockerfile
image: project32439/python
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
env_file:
- local/python.env
depends_on:
- elasticsearch
elasticsearch:
image: elasticsearch:7.10.1
environment:
- xpack.security.enabled=false
- discovery.type=single-node
networks:
default:
ipv4_address: 172.18.0.10
settings.py
# Elasticsearch
ELASTICSEARCH_HOST = "172.18.0.10"
ELASTICSEARCH_PORT = 9200
service.py
from django.conf import settings
from elasticsearch import Elasticsearch, RequestsHttpConnection
es = Elasticsearch(
hosts=[{"host": settings.ELASTICSEARCH_HOST, "port": settings.ELASTICSEARCH_PORT}],
use_ssl=False,
verify_certs=False,
connection_class=RequestsHttpConnection,
)
追溯
HTTPConnectionPool(host='172.18.0.10', port=9200): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f1973ebd6d0>, 'Connection to 172.18.0.10 timed out. (connect timeout=5)'))
【问题讨论】:
-
使用服务名作为主机应该可以
elasticsearch,也许你需要暴露端口? -
在 docker-compose 中?我试试,谢谢
标签: django docker elasticsearch elasticsearch-dsl