在Docker中启动后如何运行Django manage.py命令(Django-background-tasks)?

时间:2018-12-20 09:48:52

标签: python django docker

我有一个正在使用Docker的Django项目,并计划部署到AWS Elastic Beanstalk。基于这些要求,我需要在没有人工干预的情况下运行manage.py命令(即django-background-tasks中的“ process_tasks”)。

如果我的理解是正确的,则必须运行“ process_tasks”,否则任务将不会在计划的时间执行。

我想出了以下解决方案,将其添加到docker-compose.yml中。 问题是我在服务器启动时在“ urls”中调用后台任务,因此该解决方案导致将任务两次添加到数据库中。我的目标是每天在特定时间运行后台任务。 我缺少一个更简单的解决方案吗?

  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

  tasks:
    build: .
    command: python3 manage.py process_tasks
    volumes:
      - .:/code
    depends_on:
      - web
      - db 

1 个答案:

答案 0 :(得分:0)

web:
 build:
    context:./containerfolder


volumes:
  - .:/code
ports:
  - "8000:8000"
depends_on:
  - db

在容器docker文件的内部编写您的命令,例如python3 manage.py runserver和python3 manage.py process_tasks