这是我第一次在 Docker 上使用 Elasticsearch 和 Django,我意识到每次启动 docker-compose 时,我都必须发出 ./manage.py search_index --rebuild
来索引我的所有文档在 Elasticsearch 中。
我一直在尝试自动执行此操作,但似乎仍然不起作用。我的 web
服务命令如下所示:
web:
build: .
command: bash -c "python manage.py runserver 0.0.0.0:8000 && sleep 60 && python manage.py search_index --rebuild"
...
我添加了 sleep 60
以便它可以等待 Elasticsearch 启动后再发出重建命令。即使如此,除非我明确手动发出它,否则什么也不会发生。
最佳答案
&&
链中的第二个和第三个命令仅在第一个命令退出后(即网络服务器停止后)运行。您必须为此任务添加另一个服务。
rebuild_index:
build: .
command: bash -c "sleep 60 && python manage.py search_index --rebuild"
restart: on-failure
更好的是,您可以依赖
Elasticsearch 服务,而不是 sleep 。我不能 100% 确定这会起作用,如果您尝试过,请发布您的结果。
rebuild_index:
build: .
command: bash -c "python manage.py search_index --rebuild"
restart: on-failure
depends_on:
elasticsearch:
condition: service_started
关于django - 如何在 docker 启动时自动重建 Django 中 Elasticsearch 的搜索索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68118878/