【问题标题】:Developing with celery and docker使用 celery 和 docker 进行开发
【发布时间】:2019-11-03 03:28:16
【问题描述】:

我注意到在容器中使用 celery 进行开发,如下所示:

  celeryworker:
    build: .
    user: django
    command: celery -A project.celery worker -Q project -l DEBUG
    links:
     - redis
     - postgres
    depends_on:
      - redis
      - postgres
    env_file: .env
    environment:
      DJANGO_SETTINGS_MODULE: config.settings.celery

如果我想对某些 celery 任务进行一些更改,我必须完全重建 docker 映像才能获得最新的更改。

所以我尝试了:

docker-compose -f celery.yml down
docker-compose -f celery.yml up

什么都没有改变,那么:

docker-compose -f celery.yml down
docker-compsoe -f celery.yml build
docker-compose -f celery.yml up

我有新的变化。

这是这样做的方法吗?对我来说似乎很慢,一直在重建图像,那么最好有本地 celery 外部 docker 容器?

【问题讨论】:

    标签: django docker docker-compose celery


    【解决方案1】:

    将您的.(即您的工作副本)安装为您正在开发的容器中的一个卷。

    这样您就可以使用工作目录中的新代码而无需重新构建(除非,例如,您正在更改依赖项或其他需要重新构建的东西)。

    这个想法是explained here by Heroku,强调我的:

    version: '2'
    services:
      web:
        build: .
        ports:
          - "5000:5000"
        env_file: .env
        depends_on:
          - db
        volumes:
          - ./webapp:/opt/webapp  # <--- Whatever code your Celery workers need should be here
      db:
        image: postgres:latest
        ports:
          - "5432:5432"
      redis:
        image: redis:alpine
        ports:
          - "6379:6379"
    

    【讨论】:

    • 我按照你的指示做的很好,有一个问题,我如何从 celery 容器中编写/创建新文件?例如,芹菜需要写在日志文件中,它给了我权限被拒绝,如果我在芹菜容器内打开一个外壳,用户 ID 和组 ID 看起来像 1000:1000
    猜你喜欢
    • 1970-01-01
    • 2021-07-21
    • 2016-12-21
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2020-06-12
    相关资源
    最近更新 更多