Sign inSign up

pavelarb/crontab

By pavelarb

•Updated 11 months ago

Image
0

542

pavelarb/crontab repository overview

🕒 Универсальный Docker-контейнер с crontab для любых задач по расписанию

Универсальный контейнер с cron — ваш надёжный инструмент для автоматизации любых задач: от резервного копирования и отправки уведомлений до перезапуска сервисов и обработки данных. Работает в любом окружении — локально, на сервере, в облаке или на Raspberry Pi. Нет необходимости писать скрипты или настраивать cron вручную — всё через переменные окружения.

🚀 Быстрый старт: docker run -d
--name universal-crontab
-e CRON_TASK="*/5 * * * * echo "[$(date)] Задача выполнена" >> /var/log/cron.log"
-e TZ=Europe/Moscow
pavelarb/crontab:latest

✨ Особенности Особенность Преимущество 🎯 Гибкость Запускайте задачи по любому расписанию через простые переменные окружения ⚡ Простота Никаких сложных конфигов — только переменные окружения 🛡️ Надёжность Cron запущен через supervisord с автоматическим перезапуском 📦 Лёгкость На базе Alpine Linux — размер образа менее 15 МБ 🔐 Безопасность Без жёстко закодированных токенов и паролей 🌍 Локализация Полная поддержка часовых поясов, включая российские 🔧 Расширяемость Подключайте свои скрипты через volumes

⚙️ Переменные окружения: 🔹 CRON_TASK (ОБЯЗАТЕЛЬНАЯ) Основная задача в формате cron. Выполняется как есть. -e CRON_TASK="0 2 * * * /usr/local/bin/backup.sh"

🔹 CUSTOM_SCRIPT (опционально) Скрипт, который будет запускаться каждые 5 минут. Полезно для мониторинга. -e CUSTOM_SCRIPT="/usr/local/bin/check-internet.sh"

🔹 TZ (опционально) Часовой пояс (по умолчанию UTC). Поддерживает все стандартные IANA-таймзоны. -e TZ=Europe/Moscow # Московское время -e TZ=Asia/Yekaterinburg # Екатеринбург -e TZ=Asia/Novosibirsk # Новосибирск 💡 Совет: Используйте TZ=Europe/Moscow для работы в московском времени.

🔧 Примеры использования

  1. 🗄️ Ежедневное резервное копирование в 2:00 docker run -d
    --name backup-job
    -e CRON_TASK="0 2 * * * /usr/local/bin/backup.sh"
    -e TZ=Europe/Moscow
    -v /host/backup.sh:/usr/local/bin/backup.sh
    pavelarb/crontab:latest

  2. 📻 Проверка радиопотока каждые 30 минут docker run -d
    --name radio-check
    -e CRON_TASK="*/30 * * * * curl -f http://radio.example.com/stream⁠ || echo "Поток недоступен в $(date)" >> /var/log/radio.log"
    -e TZ=Europe/Moscow
    pavelarb/crontab:latest

  3. 📊 Множественные задачи docker run -d
    --name multi-task
    -e CRON_TASK="0 8,20 * * * /usr/local/bin/send-report.sh"
    -e CUSTOM_SCRIPT="/usr/local/bin/check-disk-space.sh"
    -e TZ=Europe/Moscow
    -v /host/scripts:/usr/local/bin
    pavelarb/crontab:latest

  4. 🤖 Telegram-уведомления в 7:00 утра docker run -d
    --name telegram-reminder
    -e CRON_TASK="0 7 * * * curl -X POST https://api.telegram.org/botYOUR_TOKEN/sendMessage⁠ -d chat_id=YOUR_CHAT_ID -d text="Доброе утро! Задача выполнена." > /dev/null"
    -e TZ=Europe/Moscow
    pavelarb/crontab:latest

  5. ⏰ Однократная задача в определённое время Создайте скрипт one-time.sh: #!/bin/bash NOW=$(date +%Y-%m-%d\ %H:%M) TARGET="2025-11-08 14:00"

if [ "$NOW" = "$TARGET" ]; then echo "🔥 Однократная задача выполнена в $NOW" # Ваша команда здесь curl -X POST https://api.telegram.org/botTOKEN/sendMessage⁠ -d chat_id=ID -d text="Задача выполнена в $TARGET" exit 0 fi exit 0

Запустите контейнер: docker run -d
--name one-time-task
-e CUSTOM_SCRIPT="/usr/local/bin/one-time.sh"
-e TZ=Europe/Moscow
-v ./one-time.sh:/usr/local/bin/one-time.sh
pavelarb/crontab:latest

📁 Подключение своих скриптов Создайте скрипт на хосте (my-script.sh): #!/bin/bash echo "[$(date)] Автоматическая задача выполнена" >> /var/log/myscript.log

Дайте права на выполнение: chmod +x my-script.sh Запустите контейнер с монтированием: docker run -d
-e CRON_TASK="0 1 * * * /usr/local/bin/my-script.sh"
-e TZ=Europe/Moscow
-v "$(pwd)/my-script.sh:/usr/local/bin/my-script.sh"
pavelarb/crontab:latest

🐳 Docker Compose Создайте docker-compose.yml: services: universal-crontab: image: pavelarb/crontab:latest container_name: crontab-job restart: unless-stopped environment: - CRON_TASK=0 6 * * * /usr/local/bin/daily-report.sh - CUSTOM_SCRIPT=/usr/local/bin/monitor.sh - TZ=Europe/Moscow volumes: - ./scripts:/usr/local/bin logging: driver: "json-file" options: max-size: "10m" max-file: "3" Запустите: docker-compose up -d

🔍 Мониторинг и отладка

⁠Просмотр логов контейнера

docker logs universal-crontab

⁠Посмотреть текущий crontab внутри контейнера

docker exec universal-crontab cat /etc/crontabs/root

⁠Войти внутрь контейнера для отладки

docker exec -it universal-crontab sh

⁠Отслеживать логи в реальном времени

docker logs -f universal-crontab

Tag summary

Content type

Image

Digest

sha256:9b244cf6a…

Size

24.9 MB

Last updated

11 months ago

docker pull pavelarb/crontab