Docker config : Celery + RabbitMQ



如何在docker容器中运行Celery和RabbitMQ?你能指出我示例 dockerfile 或撰写文件吗?

这是我所拥有的:

Dockerfile:

FROM python:3.4
ENV PYTHONBUFFERED 1
WORKDIR /tasker
ADD requirements.txt /tasker/
RUN pip install -r requirements.txt
ADD . /tasker/

docker-compose.yml

rabbitmq:
image: tutum/rabbitmq
environment:
- RABBITMQ_PASS=mypass
ports:
- "5672:5672"   
- "15672:15672"
celery:
build: .
command: celery worker --app=tasker.tasks
volumes:
- .:/tasker
links:
- rabbitmq:rabbit

我遇到的问题是我无法让芹菜保持活力或运行。它不断退出。

我在对应用程序进行码头化时遇到了类似的 Celery 退出问题。您应该在芹菜配置中使用兔子服务名称(在您的情况下为rabbitmq)作为主机名。也就是说,
使用broker_url = 'amqp://guest:guest@rabbitmq:5672//'而不是broker_url = 'amqp://guest:guest@localhost:5672//'.

就我而言,主要组件是烧瓶,芹菜和 Redis.My 问题在这里请检查链接,您可能会发现它很有用。

更新 2018,正如 Floran Gmehlin 在下面评论的那样,芹菜图像现已正式弃用,取而代之的是官方的 python 图像。

正如芹菜/问题 1 所评论的那样:

使用这个图像似乎很荒谬。如果你有一个应用程序容器,就像你通常使用 Django 一样,你需要再次将所有依赖项(你在tasks.py中导入的东西)安装在这个容器中。

这就是为什么其他项目(例如 cookiecutter-django)重用 Celery 的应用程序容器,并且只使用docker-compose对它运行不同的命令(命令:celery ... worker)。

请注意,现在docker-compose.yml称为local.yml并使用start.sh

<小时 />

原答案:

您可以尝试模拟官方的芹菜 Dockerfile,它在CMD ["celery", "worker"]之前会进行更多设置。

查看该映像的用法以正确运行它。

启动芹菜工人(RabbitMQ 经纪人)

$ docker run --link some-rabbit:rabbit --name some-celery -d celery

检查群集的状态

$ docker run --link some-rabbit:rabbit --rm celery celery status

如果您可以在 docker 编写中使用该映像,那么您可以尝试构建自己的起始FROM celery而不是FROM python

我在docker-compose.yml中使用的东西。 它对我有用。 检查此介质中的详细信息

version: '2'
services:
rabbit:
hostname: rabbit
image: rabbitmq:latest
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=mypass
ports:
- "5672:5672"
worker:
build:
context: .
dockerfile: dockerfile
volumes:
- .:/app
links:
- rabbit
depends_on:
- rabbit

相关内容

  • 没有找到相关文章

最新更新