【发布时间】:2020-04-19 09:17:06
【问题描述】:
我的 Django 应用程序使用 Celery 定期处理任务。遗憾的是,这导致有 3 个 continer(App、Celery Worker、Celery Beat),每个都有自己的启动 shell 脚本,而不是 docker 入口点脚本。 所以我的想法是有一个单一的入口点脚本,它能够处理我在 docker-compose.yml 中输入的标签。根据标签,容器应该以 App、Celery Beat 或 Celery Worker 实例启动。 我以前从未做过这样的实现,但我问自己这是否可能,因为我在 trafik loadblancer 项目中看到了类似的东西,例如:
loadbalancer:
image: traefik:1.7
command: --docker
ports:
- 80:80
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- frontend
- backend
labels:
- "traefik.frontend.passHostHeader=false"
- "traefik.docker.network=frontend"
...
我没有找到任何好的材料,根据网络上的内容或关于如何实现这样的场景,或者甚至我认为的方式是否可能。 smb 之前是这样做的,还是我应该更好地使用 3 个单独的 shell 脚本,每个服务一个?
【问题讨论】:
-
诚实的问题,您为什么不简单地通过扩展 Celery Worker 和 Celery Beat 容器来创建自己的容器,并使用您自己的自定义 shell 脚本作为启动脚本?这将确保您拥有可重现的配置。
标签: docker dockerfile celery traefik docker-entrypoint