【问题标题】:Run crontab in docker. Django在 docker 中运行 crontab。姜戈
【发布时间】:2021-05-12 23:44:02
【问题描述】:

对不起我的英语。我创建了 docker 文件。对于 cron 任务,我使用这个 library,在我的本地测试中一切正常,但现在我尝试使用 docker 并尝试在那里运行 cron。但现在我有错误

no crontab for root

我的 docker 文件:

FROM python:3.6

WORKDIR /usr/src/app
COPY requirements.txt ./

RUN apt-get update && apt-get install -y cron
RUN pip install -r requirements.txt

COPY . .
EXPOSE 8000

CMD python manage.py runserver 0.0.0.0:8000
RUN python manage.py crontab add
RUN python manage.py crontab show

我的要求

Django==1.11.4
django-filter==1.0.4
djangorestframework
Pillow
django-crontab

【问题讨论】:

  • 你确定它不起作用吗?通常,cron 会在显示此警告消息时为用户创建一个新的 crontab。
  • 尝试设置settings.CRONTAB_EXECUTABLE = '/usr/bin/crontab -e'
  • 你解决了吗?

标签: python django cron


【解决方案1】:

我最近在将 Django 项目移动到 docker-compose 环境时遇到了这个问题。

下面是 Nginx Unit 对我有用的方法,它基于 Python3.9(和一些 Ubuntu 发行版):

  1. 在 Dockerfile 中的某处必须安装并启动 cron。

    apt install cron -y
    
  2. 然后你需要开始它(我不确定这一步,最坏的情况不会发生)。

    service cron start
    
  3. 运行 django crontab

    python manage.py crontab add
    
  4. 最后一步,出现 autor 没有 正在运行

    service cron restart
    

【讨论】:

    【解决方案2】:

    也许 django-crontab 期望 crontab 在添加内容之前存在。您可以先尝试为 root 创建一个新的 crontab。

    RUN crontab <<< '# new crontab'
    RUN python manage.py crontab add
    RUN python manage.py crontab show
    

    【讨论】:

      猜你喜欢
      • 2020-12-10
      • 2020-08-17
      • 2011-01-27
      • 2016-01-06
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      • 1970-01-01
      相关资源
      最近更新 更多