Как запустить периодическую задачу с помощью crontab внутри контейнера docker?

Я создаю веб-приложение Django+Angular, которое развертывается на сервере с помощью docker-compose. И мне нужно периодически запускать одну команду управления django. Я немного поискал в SO и попробовал следующее:

docker-compose:

version: '3.7'

services:
  db:
    restart: always
    image: postgres:12-alpine
    environment:
      POSTGRES_DB: ${DB_NAME}
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    ports:
      - "5432:5432"
    volumes:
      - ./db:/var/lib/postgresql/data
  api:
    restart: always
    image: registry.gitlab.com/*******/price_comparison_tool/backend:${CI_COMMIT_REF_NAME:-latest}
    build: ./backend
    ports:
      - "8000:8000"
    volumes:
      - ./backend:/code
    environment:
      - SUPERUSER_PASSWORD=********
      - DB_HOST=db
      - DB_PORT=5432
      - DB_NAME=price_tool
      - DB_USER=price_tool
      - DB_PASSWORD=*********
    depends_on:
      - db
  web:
    restart: always
    image: registry.gitlab.com/**********/price_comparison_tool/frontend:${CI_COMMIT_REF_NAME:-latest}
    build:
      context: ./frontend
      dockerfile: Dockerfile
    volumes:
        - .:/frontend
    ports:
      - "80:80"
    depends_on:
      - api

volumes:
  backend:
  db:

Dockerfile (backend):

FROM python:3.8.3-alpine

ENV PYTHONUNBUFFERED 1
RUN apk add postgresql-dev gcc python3-dev musl-dev && pip3 install psycopg2
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
ADD entrypoint.sh /entrypoint.sh
ADD crontab_task /crontab_task
ADD run_boto.sh /run_boto.sh
RUN chmod a+x /entrypoint.sh
RUN chmod a+x /run_boto.sh
RUN /usr/bin/crontab /crontab_task
RUN pip install -r requirements.txt
ADD . /code/
RUN mkdir -p db
RUN mkdir -p logs

ENTRYPOINT ["/entrypoint.sh"]
CMD ["gunicorn", "-w", "3", "--timeout", "300", "--bind", "0.0.0.0:8000", "--access-logfile", "-", "price_tool_project.wsgi>

crontab_task:

*/1 * * * *  /run_boto.sh   > /proc/1/fd/1 2>/proc/1/fd/2

run_boto.sh:

#!/bin/bash -e
cd price_comparison_tool/backend/
python manage.py boto.py

Но когда я запускаю docker-compose up --build, я получаю следующие сообщения в терминале:

api_1  | /bin/ash: python manage.py boto   > /proc/1/fd/1 2>/proc/1/fd/2: not found
api_1  | /bin/ash: /run_boto.sh: not found

Структура проекта следующая:

.
├── backend
├── db
├── docker-compose.yml
└── frontend

Может ли кто-нибудь дать мне совет, как исправить эту проблему и периодически запускать команду управления? Заранее спасибо!

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