Задание Cron и докер

У меня есть веб-сканер. Он должен периодически запускаться. Я хочу использовать Docker для размещения как скриптов cronjob, так и базы данных. Я могу написать Dockerfile и docker-compose.yaml ниже. Я получаю следующую ошибку при запуске команды `docker-compose -f docker-compose.yaml build`. Файл сканера находится в файле src/main.py, а содержимое задания cron в файле cron-config — `0 0 * * * python3 /app/src/main.py >> /app/logs/cron.log 2>&1`. Вы видите, где я терплю неудачу?

Журнал ошибок:

> [crawler 6/7] RUN crontab /etc/cron.d/cron-config:

0.243 /bin/sh: 1: crontab: not found

docker-compose.yaml:

version: "3.8"

services:
  crawler:
    build: 
      context: .
      dockerfile: Dockerfile
    networks:
      - CNPJ_net
    restart: unless-stopped

  crawler-db:
    image: postgres:14
    restart: always
    env_file: .env
    networks:
      - CNPJ_net
    expose:
      - "$POSTGRES_PORT"
    ports:
      - "$POSTGRES_PORT:$POSTGRES_PORT"
    volumes:
      - postgres_data:/var/lib/postgresql/data

networks:
  CNPJ_net:

volumes:
  postgres_data:

Докерфайл:

FROM python:3.8-slim

WORKDIR /app

# Copy your application code
COPY . .

# Copy the crontab file to the cron.d directory
COPY cron-config /etc/cron.d/cron-config

# Give execution rights on the cron job
RUN chmod 0644 /etc/cron.d/cron-config

# Apply cron job
RUN crontab /etc/cron.d/cron-config

# Create the log file to be able to run tail
RUN touch /var/log/cron.log

# Run the command on container startup
CMD cron && tail -f /app/logs/cron.log

Любая помощь приветствуется.

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
0
62
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Похоже, большая часть вашего docker-файла была скопирована из этого вопроса.

Ваша ошибка (crontab: not found) предполагает, что crontab не установлен, и в этом файле докеров в связанном вопросе первая команда, которую они запускают, — это установить cron.

RUN apt-get update && apt-get -y install cron

Если вы добавите это в начало файла докеров, это сработает?

Журнал ошибок исчезает. Волшебство!!

Bruno Peixoto 29.05.2024 02:07

Моя текущая главная цель — работать с использованием базы данных. Мне становится все труднее, хотя я снова и снова возобновлял ход своих мыслей. Можете ли вы взглянуть (?): github.com/brunolnetto/db-cron-docker

Bruno Lobo 02.06.2024 16:52

У вас должна быть возможность скопировать его за пределами вашей настройки docker-compose:

➜  ~ docker run -it python:3.8-slim /bin/bash
root@xxx:/# crontab -l
bash: crontab: command not found

Похоже, что в базовом изображении отсутствует CLI. Вы можете либо установить его с помощью apt-get, как описано здесь, либо просто использовать другой базовый образ.

Моя текущая главная цель — работать с использованием базы данных. Мне становится все труднее, хотя я снова и снова возобновлял ход своих мыслей. Можете ли вы взглянуть (?): github.com/brunolnetto/db-cron-docker

Bruno Lobo 02.06.2024 16:52

Другие вопросы по теме