在Docker容器中与Cron平行的Cron

我目前正在运行一个Django的Web应用程序在一个Docker撰写安装程序。 因为我想让服务器定期运行Djangopipe理命令,所以我为它设置了一个crontab。

* * * * * root /usr/local/bin/python /usr/src/app/manage.py updatesomething >> /usr/src/app/cron.log 2>&1 

我正在使用下面显示的Dockerfile,正如你可以看到我已经尝试运行与CMD ["cron", "-f"]独立的crontab。 这工作正常,运行命令,因为它应该。 然而,这个想法是,它可以并行运行,并触发Web应用程序的pipe理命令 。 我也已经validation了crontab文件存在。

cron.log文件保持空白超过10分钟,所以cron显然不在这里工作。 有没有人有一个解决scheme在python:3容器中运行cron并行? Supervisor不是一个真正的select,因为我有一个Python 3的代码库。 而且我还不能让马戏团在另一个容器中使用数据库。

 ############################################################ # Dockerfile to run a Django-based web application # Based on a Python 3 image ############################################################ # Set the base image to use to Python 3 FROM python:3 RUN apt-get update -qq && apt-get install -y -qq --force-yes cron COPY ./docker/crontab/updatesomething /etc/cron.d/updatesomething RUN chmod 0644 /etc/cron.d/updatesomething RUN mkdir -p /usr/src/app /srv/logs WORKDIR /usr/src/app # Install dependencies COPY requirements.txt /usr/src/app/ RUN pip install --no-cache-dir -r requirements.txt RUN cron # Copy application files COPY . /usr/src/app/ # Port to expose EXPOSE 8000 # Copy entrypoint script into the image COPY docker_entrypoint.sh /docker_entrypoint.sh RUN chmod +x /docker_entrypoint.sh CMD ["/docker_entrypoint.sh"] 

如果你想定期运行pipe理命令,看看芹菜和使用芹菜击败 。 您可以运行在特定时间调用pipe理命令的任务,就像您使用cron所做的一样。 Django可以从代码中调用pipe理命令。 你可以运行芹菜和芹菜击败您的docker,撰写设置。

 from celery import shared_task from django.core.management import call_command @shared_task def management_command_task(): call_command('my_command', 'foo', bar='baz')