Docker配置:Celery + RabbitMQ

blu*_*inc 6 rabbitmq celery docker dockerfile docker-compose

如何在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/
Run Code Online (Sandbox Code Playgroud)

泊坞窗,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
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我不能让芹菜活着或跑步.它不断退出.

JPG*_*JPG 7

我在 dockerizing 应用程序时遇到了类似的 Celery 退出问题。您应该使用兔服务名称(在你的情况下,它rabbitmq在你的芹菜configuration.That)作为主机名,
使用broker_url = 'amqp://guest:guest@rabbitmq:5672//'的替代broker_url = 'amqp://guest:guest@localhost:5672//'

就我而言,主要组件是 Flask、Celery 和 Redis。我的问题在这里,请查看链接,您可能会发现它很有用。


Von*_*onC 2

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

正如celery/issue 1中评论的那样:

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

这就是为什么其他项目(例如 cookiecutter-django)重用Celery 的应用程序容器,并且仅celery ... worker使用docker-compose.

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


原答案:

您可以尝试模拟官方的celery Dockerfile,它在CMD ["celery", "worker"].

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

启动一个 celery 工作者(RabbitMQ Broker)

$ docker run --link some-rabbit:rabbit --name some-celery -d celery
Run Code Online (Sandbox Code Playgroud)

检查集群状态

$ docker run --link some-rabbit:rabbit --rm celery celery status
Run Code Online (Sandbox Code Playgroud)

如果您可以在 docker-compose 中使用该映像,那么您可以尝试构建自己的启动FROM celery而不是FROM python.