Запланированные задачи
Узнайте, как автоматизировать задачи с помощью функции запланированных задач Skitflow
Запланированные задачи в Skitflow позволяют создавать и управлять автоматизированными задачами, которые выполняются по заданному расписанию с использованием cron-выражений. Каждое выполнение задачи создаёт запись в логе, где вы можете отслеживать вывод и статус выполнения.
Типы задач
Skitflow поддерживает четыре типа запланированных задач:
- Задачи приложений: Выполнение команд внутри конкретных контейнеров приложений
- Задачи Compose: Выполнение команд в сервисах Docker Compose
- Задачи сервера: Выполнение скриптов на удалённых серверах
- Задачи сервера Skitflow: Выполнение задач на самом сервере Skitflow
Контейнерные задачи (Application и Compose)
Для задач приложений и Compose вы можете выполнять отдельные команды внутри целевого контейнера. Skitflow внутренне использует Docker exec для запуска этих команд:
docker exec -it <container_id> <command>Пример
Предположим, у вас есть контейнер nginx и вы хотите проверить версию nginx:
- Создайте новую запланированную задачу
- Установите команду:
nginx -v - Настройте желаемое расписание, используя синтаксис cron
- Сохраните и отслеживайте логи выполнения
Целевой контейнер должен быть запущен для успешного выполнения задачи.
Для задач Docker Compose не рекомендуется изменять переменную окружения COMPOSE_PROJECT_NAME, так как она используется для идентификации проекта.
Серверные задачи (Server и Skitflow Server)
Для удалённых серверов и сервера Skitflow вы можете писать bash-скрипты для выполнения различных задач. Эти скрипты могут использовать любую команду или инструмент, доступный в целевой системе.
Убедитесь, что все необходимые зависимости установлены на целевом сервере перед использованием в ваших скриптах.
Пример 1: Автоматическая очистка Docker
Этот скрипт очищает неиспользуемые контейнеры Docker. Вы можете запланировать его выполнение каждые 15 минут, используя cron-выражение */15 * * * *:
#!/bin/bash
docker system prune --forceПример 2: Пользовательское резервное копирование базы данных
Вы можете создавать скрипты для резервного копирования баз данных, которые не поддерживаются нативно Skitflow. Вот пример структуры пользовательского скрипта резервного копирования:
#!/bin/bash
# Backup script for custom database
backup_date=$(date +%Y%m%d_%H%M%S)
backup_file="database_${backup_date}.backup"
# search the container name
container_name=$(docker ps --filter "name=clickhouse" --format "{{.Names}}")
# Add your backup commands here
docker exec -it $container_name clickhouse-client --query "BACKUP DATABASE mydb TO '/backups/$backup_file'"
# Upload to S3 (if needed)
# aws s3 cp /backups/$backup_file s3://your-bucket/backups/Опции задачи
Помимо команды или скрипта, каждая задача поддерживает:
- Cron-выражение — расписание в стандартном cron-синтаксисе.
- Таймзона — вычислять расписание в конкретной таймзоне.
- Shell — запускать скрипты через
bashилиsh. - Enabled — включать и выключать задачу без удаления.
- Запустить сейчас — вручную запустить задачу для проверки, вне расписания.
Лучшие практики
- Всегда тестируйте команды или скрипты вручную перед планированием
- Используйте надлежащую обработку ошибок в ваших скриптах
- Учитывайте влияние запланированных задач на системные ресурсы
Автоматическое развёртывание
Автоматическое развёртывание вашего приложения в Skitflow может быть выполнено двумя основными методами — с помощью Webhooks или Skitflow API. Каждый метод поддерживает различные платформы и обеспечивает оптимизированный процесс развёртывания.
Резервное копирование томов
Узнайте, как создавать резервные копии томов с помощью функции резервного копирования томов Skitflow