У меня есть веб-сканер. Он должен периодически запускаться. Я хочу использовать 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
Любая помощь приветствуется.


Похоже, большая часть вашего docker-файла была скопирована из этого вопроса.
Ваша ошибка (crontab: not found) предполагает, что crontab не установлен, и в этом файле докеров в связанном вопросе первая команда, которую они запускают, — это установить cron.
RUN apt-get update && apt-get -y install cron
Если вы добавите это в начало файла докеров, это сработает?
Моя текущая главная цель — работать с использованием базы данных. Мне становится все труднее, хотя я снова и снова возобновлял ход своих мыслей. Можете ли вы взглянуть (?): github.com/brunolnetto/db-cron-docker
У вас должна быть возможность скопировать его за пределами вашей настройки 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
Журнал ошибок исчезает. Волшебство!!