/ / Docker config: Celery + RabbitMQ - okno dokowane, rabbitmq, seler, docker-compose, dockerfile

Konfiguracja Docker: Celery + RabbitMQ - docker, rabbitmq, seler, docker-compose, dockerfile

Jak uruchomić Celery i RabbitMQ w kontenerze dokowania? Czy możesz wskazać mi przykładowy plik dokera lub skomponować pliki?

Oto co mam:

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

Kwestia, którą mam, nie może skłonić Celery do pozostania przy życiu lub biegania.

Odpowiedzi:

2 dla odpowiedzi № 1

Aktualizacja 2018, as skomentowane poniżej przez Floran Gmehlin, Obraz selera jest obecnie oficjalnie przestarzały na rzecz oficjalny obraz Pythona.

Jak skomentowano seler / problem 1:

Używanie tego obrazu wydaje się śmieszne. Jeśli masz kontener aplikacji, jak zwykle w Django, potrzebujesz wszystkich zależności (rzeczy, które importujesz) tasks.py) ponownie zainstalowany w tym kontenerze.

Dlatego inne projekty (np. Cookiecutter-django) ponownie użyj kontenera aplikacji dla selera i uruchom tylko inne polecenie (polecenie: celery ... worker) przeciwko docker-compose.

Uwaga, teraz docker-compose.yml jest nazywany local.yml I użyć start.sh.


Oryginalna odpowiedź:

Możesz spróbować naśladować urzędnika seler Dockerfile, który ma nieco więcej ustawień przed CMD ["celery", "worker"].

Widzieć wykorzystanie tego obrazu uruchomić go poprawnie.

założyć pracownika selera (RabbitMQ Broker)

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

sprawdź status klastra

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

Jeśli możesz użyć tego obrazu w komponencie dokera, możesz spróbować zbudować własny start FROM celery zamiast FROM python.


2 dla odpowiedzi nr 2

Mam podobny problem z wychodzeniem z Selera podczas dokowania aplikacji. Powinieneś użyć nazwy usługi królika (w twoim przypadku jest to rabbitmq) jako nazwę hosta w konfiguracji selera.
posługiwać się broker_url = "amqp://guest:guest@rabbitmq:5672//" zamiast broker_url = "amqp://guest:guest@localhost:5672//" .

W moim przypadku głównymi elementami są Flask, Celery i Redis.My problem to TUTAJ sprawdź link, może ci się przydać.


1 dla odpowiedzi nr 3

coś, czego użyłem w moim docker-compose.yml. mi to pasuje. sprawdź szczegóły w tym średni

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