🕒 Универсальный 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 для работы в московском времени.
🔧 Примеры использования
🗄️ Ежедневное резервное копирование в 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
📻 Проверка радиопотока каждые 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
📊 Множественные задачи
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
🤖 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
⏰ Однократная задача в определённое время Создайте скрипт 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
docker exec universal-crontab cat /etc/crontabs/root
docker exec -it universal-crontab sh
docker logs -f universal-crontab
Content type
Image
Digest
sha256:9b244cf6a…
Size
24.9 MB
Last updated
11 months ago
docker pull pavelarb/crontab