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を生きたまま走らせ続けることができないということです。
回答:
回答№1は22018を更新 下記のコメント 〜によって フロラン・グメリン、セロリのイメージは現在公式に廃止されています 公式pythonイメージ.
でコメントとして セロリ/ issue 1:
この画像を使うのはばかげているようです。通常Djangoと同じようにアプリケーションコンテナを持っている場合、すべての依存関係が必要です(インポートしたもの)
tasks.py
)このコンテナに再度取り付けます。だからこそ、他のプロジェクト(例cookiecutter-django) アプリケーションコンテナを再利用する Celeryの場合は、異なるコマンド(command:のみ)を実行します。
celery ... worker
それに対してdocker-compose
.
注意してください、今 docker-compose.yml
と呼ばれる local.yml
使用する start.sh
.
元の答え:
あなたは公式を試すことができます セロリDockerfile、それは前にもう少しセットアップをします CMD ["celery", "worker"]
.
見る その画像の使い方 正しく実行する
セロリワーカーを始める(RabbitMQ Broker)
$ docker run --link some-rabbit:rabbit --name some-celery -d celery
クラスタの状態を確認する
$ docker run --link some-rabbit:rabbit --rm celery celery status
あなたがあなたのdocker-composeでそのイメージを使うことができるなら、あなたはあなた自身の始めを作ってみることができます FROM celery
の代わりに FROM python
.
回答№2については2
アプリケーションをdockerizingしている間、私は同様のCelery終了問題を抱えています。あなたはウサギのサービス名を使うべきです(あなたの場合はそれです) rabbitmq
)あなたのセロリ設定のホスト名として。
つかいます broker_url = "amqp://guest:guest@rabbitmq:5672//"
の代わりに broker_url = "amqp://guest:guest@localhost:5672//"
.
私の場合、主なコンポーネントはフラスコ、セロリとRedisです。私の問題は ここに リンクを確認してください、あなたはそれが役に立つかもしれません。
回答№3の場合は1
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