我有一个django项目,它使用django elasticsearch dsl。项目是固定的,因此elasticsearch和web项目放在不同的容器中。现在我的目标是重建和重新填充正在运行的索引
python manage.py search_index --rebuild
为此,我尝试通过以下方式从web服务的容器运行命令:
docker-compose exec web /bin/bash
> python manage.py search_index --rebuild
不出所料,我犯了个错误
Failed to establish a new connection: [Errno 111] Connection refused)
显然是因为python试图使用localhost:9200. 所以问题是,如何告诉管理命令elasticsearch所在的主机?
这是我的docker-compose.yml文件:
version: '2'
services:
web:
build: .
restart: "no"
command: ["python3", "manage.py", "runserver", "0.0.0.0:8000"]
env_file: &envfile
- .env
environment:
- DEBUG=True
ports:
- "${DJANGO_PORT}:8000"
networks:
- deploy_network
depends_on:
- elasticsearch
- db
elasticsearch:
image: 'elasticsearch:2.4.6'
ports:
- "9200:9200"
- "9300:9300"
networks:
- deploy_network
db:
image: "postgres"
container_name: "postgres"
restart: "no"
env_file: *envfile
ports:
- "5432:5432"
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
networks:
deploy_network:
driver: bridge
更新:
在django项目的设置中,我设置elasticsearch dsl主机:
# settings.py
ELASTICSEARCH_DSL = {
'default': {
'hosts': 'localhost:9200'
}
}
暂无答案!
目前还没有任何答案,快来回答吧!