Я использую приложение 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.
И все, процессыне подчинены этому.
Чего не хватает?