Проблема с запуском сельдерея в другом контейнере докера, чем в приложении Flask - PullRequest
0 голосов
/ 12 сентября 2018

Я использую приложение Flask с Celery для отправки подпроцессов с помощью docker-compose.Однако я не могу заставить работать Celery, когда пытаюсь запустить его в другом контейнере.

Если я запускаю Celery в том же контейнере, я запускаю приложение фляги, оно работает, но мне кажется, что я ошибаюсь.объединение двух разных вещей в одном контейнере путем добавления этого в сценарий запуска перед запуском приложения фляги:

nohup celery worker -A app.controller.engine.celery -l info &

Однако, если я добавлю Celery в качестве нового контейнера в моем docker-compose. это не работает.Это мой конфиг:

(..)

engine:
  image: engine:latest
  container_name: engine
  ports:
    - 5000:5000
  volumes:
    - $HOME/data/engine-import:/app/import
  depends_on:
    - mongo
    - redis
  environment:
    - HOST=localhost

celery:
  image: engine:latest
  environment:
        - C_FORCE_ROOT=true
  command: ["/bin/bash", "-c", "./start-celery.sh"]
  user: nobody
  depends_on:
    - redis

(..)

А это start-celery.sh:

#!/bin/bash
source ./env/bin/activate

cd ..
celery worker -A app.controller.engine.celery -l info

Его журналы:

INFO:engineio:Server initialized for eventlet.
INFO:engineio:Server initialized for threading.
[2018-09-12 09:43:19,649: INFO/MainProcess] Connected to redis://redis:6379//
[2018-09-12 09:43:19,664: INFO/MainProcess] mingle: searching for neighbors
[2018-09-12 09:43:20,697: INFO/MainProcess] mingle: all alone
[2018-09-12 09:43:20,714: INFO/MainProcess] celery@8729618bd4bc ready.

И все, процессыне подчинены этому.

Чего не хватает?

1 Ответ

0 голосов
/ 12 сентября 2018

Я обнаружил, что это работает, только если я добавлю это в определение docker-compose службы celery:

environment: 
      - C_FORCE_ROOT=true

Интересно, почему в противном случае я не получил никакой ошибки.

...