0

我正在分享我的 GitHub 存储库链接供您参考。 https://github.com/deepenpatel19/test_django_cron

在这里,我建立了一个项目来测试 Docker 中的 cron 调度程序。但是,调度程序没有按时运行。我必须手动运行。

Django 依赖项:

Django==1.8 
django-cron==0.5.0 
uwsgi==2.0.18 
django-common-helpers==0.9.2

码头工人配置:

FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
RUN apt-get update && apt-get purge nodejs && apt-get install -y --no-install-recommends gcc g++ default-libmysqlclient-dev libssl-dev libjpeg62-turbo-dev zlib1g-dev curl wget apt-transport-https gnupg2 nginx supervisor cron vim&& wget https://nodejs.org/dist/v6.4.0/node-v6.4.0-linux-x64.tar.xz && apt-get install -y xz-utils && tar -C /usr/local --strip-components 1 -xJf node-v6.4.0-linux-x64.tar.xz && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && apt-get update && apt-get install -y yarn && sed '/st_mysql_options options;/a unsigned int reconnect;' /usr/include/mysql/mysql.h -i.bkp && apt-get clean && pip install Django==1.8 django-cron==0.5.0 uwsgi==2.0.18 django-common-helpers==0.9.2&& rm -rf /var/lib/apt/lists/*  && rm -rf /root/.cache
ADD . /code/
RUN useradd --no-create-home nginx
RUN rm /etc/nginx/sites-enabled/default
RUN touch /var/log/cron.log
COPY nginx.conf /etc/nginx/
COPY django-site-nginx.conf /etc/nginx/conf.d/
COPY uwsgi.ini /etc/uwsgi/
COPY supervisord.conf /etc/supervisor/
WORKDIR /code
EXPOSE 8081
CMD ["/usr/bin/supervisord"]
4

1 回答 1

0

您需要设置 crontab 并启动 cron 服务。为了测试您的每分钟 cron,我将django.cron在您的项目的根目录中添加以下内容:

* * * * * /usr/local/bin/python /code/manage.py runcrons >> /code/cron.log 2>&1

然后,在您的Dockerfile添加中:

COPY django.cron /etc/cron.d/
RUN crontab /etc/cron.d/django.cron

并将命令更改为:

CMD /usr/sbin/cron && /usr/bin/supervisord
于 2020-05-14T23:44:59.437 回答