Проблема с запуском Django crontab в контейнере Docker

Я пытаюсь создать простой cron в моем приложении django, но, несмотря на правильное добавление и запуск, cron не выполняется и не сохраняет журналы

settings.py


INSTALLED_APPS = [
    'django_crontab',
]

CRONJOBS = [
    ('*/1 * * * *', 'myapp.cron.test_func', '>> /var/log/cron.log 2>&1'),
]

Dockerfile

python:3.12
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /app

COPY requirements.txt .

RUN pip3 install --upgrade pip
RUN pip3 install --no-cache-dir -r requirements.txt

RUN apt-get update && \
    apt-get install -y cron && \
    apt-get clean

RUN touch /var/log/cron.log

docker-entrypoint.sh


python3 manage.py crontab add
service cron start

exec "$@"

При запуске контейнера команды выдают такие результаты:

crontab -l

*/1 * * * * * /usr/local/bin/python3 /app/manage.py crontab run <cron_id> >> /var/log/cron.log 2>&1 # django-cronjobs для my_project

python3 manage.py crontab show

<cron_id> -> ('*/1 * * * *', 'myapp.cron.test_func', '>> /var/log/cron.log 2>&1')

service cron status

cron запущен.

Ручной запуск cron командой «python3 manage.py crontab run <cron_id>» работает нормально, журналы пустые.

Последнее обновление проекта django-crontab было в 2016 году... более 8 лет назад. Вероятно, это мертвый проект.

Я бы рекомендовал реализовать пользовательскую команду администрирования django и зарегистрировать ее в crontab по старинке (crontab -e).

В файле bash настройте виртуальное окружение, затем вызовите пользовательский скрипт администрирования, как показано ниже python manage.py <имя_скрипта> --settings=<django_app>.settings

Запланируйте запуск скрипта в cron (например): 30 * * * * <путь_к_скрипту>/<имя_скрипта>.sh

Если вы добавляете свой bash-файл в git, убедитесь, что вы установили .sh-файл на поддержание выполнения. например, C:\Temp\TestRepo>git update-index --chmod=+x foo.sh

Вернуться на верх