Здравствуйте!
Пытаюсь запустить два контейнера, в первом работает брокер для celery, во втором будет django, uwsgi, celery.
Вообще хотелсь бы запустить celery в отдельном контейнере, используя официальный образ, непонятно только как будет выглядеть структура такого приложения. Ну да ладно. Пробую запустить дев-сервер джанго и воркер с помощью supervisord. Джанго стартует, supervisor выдает ошибку:
django | 2016-05-31 14:23:43,685 INFO spawned: 'celery' with pid 28
django | 2016-05-31 14:23:44,198 INFO exited: celery (exit status 1; not expected)
django | 2016-05-31 14:23:47,212 INFO spawned: 'celery' with pid 32
django | 2016-05-31 14:23:47,760 INFO exited: celery (exit status 1; not expected)
django | 2016-05-31 14:23:48,765 INFO gave up: celery entered FATAL state, too many start retries too quickly
docker-compose.yml
version: '2'
services:
rabbitmq:
container_name: rabbitmq
image: rabbitmq
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
ports:
- "5672:5672"
- "15672:15672"
django:
container_name: django
build: ../proj/
volumes:
- /home/user/proj
command: supervisord -c supervisord.conf
ports:
- "8000:8000"
links:
- rabbitmq
depends_on:
- "rabbitmq"
Dockerfile
FROM ubuntu:16.04
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y python3 python3-pip build-essential python3-dev supervisor
COPY . /home/user/proj
WORKDIR /home/user/proj
RUN pip3 install -r requirements.txt \
&& python3 manage.py collectstatic --no-input \
&& python3 manage.py makemigrations \
&& python3 manage.py migrate
supervisord.conf
[supervisord]
nodaemon=true
[program:django]
command=python3 manage.py runserver 0.0.0.0:8000
[program:celery]
command=celery worker -A proj --loglevel=info
Из логов контейнера видно что rabbitmq стартует позже, несмотря на ключ depends_on. В общем, что делать? Конфиги как только не крутил, ошибка всегда одна и та же.