i am trying to run a cronjob every minute, as a test, on my django app with django_crontab. I tryed running 2 cronjobs, one with django_crontab other with my cron
PART 1 django_crontabs
1- I already installed django_crontab and added in my requirements.txt
pip install django-crontab
django-crontab==0.7.1
2- Added to my settings.py
INSTALLED_APPS = [
'django_crontab',
...
]
CRONJOBS = [
('*/1 * * * *', 'myapp.cron.my_scheduled_job', '>> /var/log/cron.log 2>&1'),
]
3- Created a file cron.py inside folder myapp
from datetime import datetime
def my_scheduled_job():
date = datetime.today().date()
print(date)
print('RUNNING CRONTAB YESSSSSSSSSSS!!!!!!!')
pass
return True
4- My Dockerfile
FROM python:3.9-buster
WORKDIR /app
COPY ./requirements.txt .
RUN apt-get update && apt-get install libpq-dev gcc python3-dev musl-dev libffi-dev -y && apt-get install -y cron
RUN pip install uwsgi
RUN pip install -r requirements.txt
RUN export PYTHONPATH=$PYTHONPATH:/app/
COPY src/hello-cron /etc/cron.d/hello-cron
RUN chmod 0644 /etc/cron.d/hello-cron
RUN crontab /etc/cron.d/hello-cron
RUN touch /var/log/cron.log
COPY ./src .
ENV PORT=8000
EXPOSE 8000
# Runner script here
CMD ["sh", "/app/runner.sh"]
5- My docker-compose file
version: '3.3'
services:
app:
build: .
command: bash -c "python3 ./manage.py crontab add && python3 ./manage.py runserver 0.0.0.0:8000"
ports:
- 8000:8000
volumes:
- ./src:/app/:Z
PART 2 cronjobs linux
6- I created a file called hello-cron , and used above on the Dockerfile, with current infos:
* * * * * echo "Hello world" >> /var/log/cron.log 2>&1
When I run sudo docker-compose up --build, I get on my docker logs
app_1 | adding cronjob: (0c7b4daeba89b95a59287e280193e9ca) -> ('*/1 * * * *', 'myapp.cron.my_scheduled_job', '>> /var/log/cron.log 2>&1')
app_1 | Watching for file changes with StatReloader
7- If i access my container, via, sudo docker exec -it app_1 bash and run crontab -l , i get:
* * * * * echo "Hello world" >> /var/log/cron.log 2>&1
*/1 * * * * /usr/local/bin/python3 /app/manage.py crontab run 0c7b4daeba89b95a59287e280193e9ca >> /var/log/cron.log 2>&1 # django-cronjobs for portal
But when I check my /var/log/cron.log it is empty...
What should i do?