Docker/Celery:无法让芹菜运行

blu*_*inc 6 python celery docker

我不能让我的芹菜工人经常听默认队列.芹菜不断退出.

$: docker-compose up
Starting tasker_rabbitmq_1
Starting tasker_celery_1
Attaching to tasker_rabbitmq_1, tasker_celery_1
tasker_celery_1 exited with code 1
rabbitmq_1  | 
rabbitmq_1  |               RabbitMQ 3.6.1. Copyright (C) 2007-2016 Pivotal Software, Inc.
rabbitmq_1  |   ##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/
rabbitmq_1  |   ##  ##
rabbitmq_1  |   ##########  Logs: /var/log/rabbitmq/rabbit@0bcd2c4762eb.log
rabbitmq_1  |   ######  ##        /var/log/rabbitmq/rabbit@0bcd2c4762eb-sasl.log
rabbitmq_1  |   ##########
rabbitmq_1  |               Starting broker... completed with 6 plugins.
Run Code Online (Sandbox Code Playgroud)

我正在尝试构建一个具有单独作业层的应用程序作为单独部署的作业容器.所以架构是:

  1. EBS上的 Web/App层(Django)
  2. Jobs Layer:Celery + RabbitMQ作为Docker容器

这就是我所拥有的:

文件夹结构:

-tasker
    -tasker
        -tasks.py
        -celeryconfig.py
        - __init__.py
    -Dockerfile
    -docker-compose.yml
    -requirements.txt
Run Code Online (Sandbox Code Playgroud)

tasks.py:

from celery import Celery
from celery import task

celery = Celery('tasks', broker='amqp://guest@localhost//')

import os


@celery.task
def add(x, y):
    return x + y
Run Code Online (Sandbox Code Playgroud)

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)

有什么我想念的吗?为什么芹菜退出代码1?

Neg*_*ash 1

1)将celery安装到python Docker镜像或使用https://hub.docker.com/r/library/celery/

2)将完整地址添加到rabbitmq,并在行中输入密码:

celery = Celery('tasks', broker='amqp://guest:mypass@rabbit//')