Как запустить cron через точку входа Dockerfile
Я пытаюсь запустить задание cron через файл точки входа Docker.
Dockerfile:
FROM python:3.8-slim-buster
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN apt-get update -y && apt-get install -y build-essential postgresql python-scipy python-numpy python-pandas cron libgdal-dev && apt-get clean && rm -rf /var/lib/apt/lists/*
COPY ./django-entrypoint.sh .
RUN mkdir /industrialareas
WORKDIR /industrialareas
COPY ./project .
COPY ./requirements.txt .
RUN chmod 755 /django-entrypoint.sh
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8000
CMD ["/django-entrypoint.sh"]
django-entrypoint.sh:
#!/bin/bash
# Django
python /industrialareas/manage.py collectstatic --noinput
python /industrialareas/manage.py migrate
python /industrialareas/manage.py runserver 0.0.0.0:8000
# Cron
service cron restart
service cron status
python /industrialareas/manage.py crontab add
python /industrialareas/manage.py crontab show
exec "$@"
Но работает только Django команды, потому что я проверяю его
service cron status и остановлен и python manage.py crontab show и метод не добавлен.
Если я запускаю скрипт вручную, он работает хорошо ./django-entrypoint.sh. Задание cron выполняется и я могу видеть вывод в лог-файле.
Кто-нибудь может помочь мне, пожалуйста? Заранее спасибо.
Изменение порядка команд решает проблему, служба cron запускается и задание работает нормально.
django-entrypoint.sh:
#!/bin/bash
# Cron
service cron restart
python /industrialareas/manage.py crontab add
# Django
python /industrialareas/manage.py collectstatic --noinput
python /industrialareas/manage.py migrate
python /industrialareas/manage.py runserver 0.0.0.0:8000
exec "$@"