在与Flask应用程序不同的Docker容器中运行芹菜时出现问题

问题描述 投票:0回答:1

我正在使用Celery运行Flask应用程序,以使用docker-compose提交子流程。但是,当尝试在不同的容器中运行时,我无法使Celery工作。

如果我在同一个容器中运行Celery,我正在运行烧瓶应用程序它可以工作,但感觉是错误的方式,我在一个容器中耦合两个不同的东西,通过在烧瓶应用程序运行之前在启动脚本中添加它:

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

但是,如果我在我的docker-compose.yml中添加Celery作为新容器,则它不起作用。这是我的配置:

(..)

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.

这就是全部,流程不会提交给它。

有什么可以遗漏?

python-3.x docker flask docker-compose celery
1个回答
0
投票

我发现它只有在我将它添加到芹菜服务的docker-compose定义时才有效:

environment: 
      - C_FORCE_ROOT=true

我想知道为什么我没有得到任何错误。

© www.soinside.com 2019 - 2024. All rights reserved.