0

I have installed django-crontab==0.7.1 and added to INSTALLED_APPS Django configuration. I'm trying to start cron service on the Docker image build and add the command cron task with python manage.py crontab add but nothing occurs.

Dockerfile:

FROM python:3.8-slim-buster
LABEL maintainer="info@albertosanmartinmartinez.es" version="1.0.0"
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN apt-get update -y && apt-get install -y build-essential postgresql python-scipy python-numpy python-pandas libgdal-dev && apt-get clean && rm -rf /var/lib/apt/lists/*
RUN mkdir /industrialareas
COPY ./project /industrialareas/
COPY ./requirements.txt /industrialareas/
WORKDIR /industrialareas
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8000
CMD service cron start

docker-compose.yml:

version: '3.7'
services:
  django:
    container_name: industrialareas_django_ctnr
    build:
      context: .
      dockerfile: Dockerfile-django
    restart: unless-stopped
    env_file: ./project/project/settings/.env
    command: python manage.py check
    command: python manage.py collectstatic --noinput
    command: python manage.py runserver 0.0.0.0:8000
    command: python manage.py crontab add
    volumes:
      - ./project:/industrialareas
    depends_on:
      - postgres
    ports:
      - 8000:8000

But when I go into the container and run the service cron status command, I get the error.

[FAIL] cron is not running ... failed!

Anybody could help me please ? Thanks in advance.

  • A container only runs one command, and then exits; if you have multiple Compose `command:` lines, only the last one will have an effect and it will override the image's `CMD` (in this setup I'd expect the container to exit immediately). A best practice would be to run the cron daemon in a separate container. I've linked to some related questions about running cron and more generally about running a sequence of commands at container startup. – David Maze Feb 16 '22 at 11:24

0 Answers0