Как запускать пользовательские команды django-admin как задание cron в docker?

У меня есть django-app sample. В этом приложении я создал файл test.py и написал в нем свои пользовательские команды, как указано в официальной документации django

sample/
    __init__.py
    models.py
    management/
        __init__.py
        commands/
            __init__.py
            test.py
    views.py

test.py:

from django.core.management.base import BaseCommand

class Command(BaseCommand):

    def handle(self, *args, **options):
        # Sample content
        print("Hello World")

Я выполнил команду python manage.py test и она работает. Мне нужно запустить эту команду как задание cron в docker. Я попробовал следующее: создал файл cron hello-cron.

hello-cron:

* * * * * root python /home/manage.py test >> /home/cron.log 2>&1

# Empty line

Dockerfile:

FROM python:3.10.6
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /home
COPY requirements.txt /home/
RUN pip install -r requirements.txt
COPY . /home/
RUN apt-get update && apt-get -y install cron
COPY hello-cron /home/hello-cron
RUN chmod 0644 /home/hello-cron
RUN chmod 0744 /home/sample/management/commands/test.py
RUN crontab /home/hello-cron
RUN touch /home/cron.log
CMD cron && tail -f /home/cron.log

docker-compose.yml:

version: "3.9"

services:
  db:
    image: postgres
    volumes:
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  web:
    restart: always
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/home
    ports:
      - "8000:8000"
    environment:
      - POSTGRES_NAME=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    depends_on:
      - db

Я запустил контейнер с помощью команды docker-compose up --build, но задание cron не работает.

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