Skip to content

gromov-io/docker-s3-backup

Repository files navigation

Warning

Это зеркало! Основной репозиторий: https://gromlab.ru/gromov/docker-s3-backup

GitHub утратил статус надежной площадки для open-source, применяя политические блокировки репозиториев вместо сохранения нейтралитета. Блокировки коснулись разработчиков из России (Донецк, Луганск, Крым, Херсонская обл., Запорожская обл.), Ирана, Сирии, Кубы и Северной Кореи.

  • ⚠️ Pull requests и issues создавайте только в основном репозитории
  • 🔄 Зеркало обновляется автоматически
  • 🚫 Изменения здесь будут перезаписаны

Docker S3 Backup

Автоматическое резервное копирование Docker-проектов в S3-хранилище по расписанию.

Что делает

  • Создаёт полный архив директории проекта
  • Загружает в S3-совместимое хранилище (Yandex Cloud, Timeweb, AWS S3, MinIO)
  • Работает по расписанию cron (по умолчанию: каждый день в 05:00 МСК)
  • Хранит только последние N версий бэкапов (по умолчанию: 30)
  • Сохраняет бекапы в папку с именем проекта: s3://bucket/project-name/
  • Опционально останавливает сервисы перед бекапом

Быстрый старт

Создайте docker-compose.yaml:

services:
  backup:
    image: ghcr.io/gromov-io/docker-s3-backup:latest
    container_name: project-backup
    restart: unless-stopped
    environment:
      - BACKUP_PROJECT_NAME=my-project
      - BACKUP_S3_BUCKET=my-backups
      - BACKUP_S3_ENDPOINT=s3.twcstorage.ru
      - BACKUP_S3_ACCESS_KEY=your_key
      - BACKUP_S3_SECRET_KEY=your_secret
    volumes:
      - .:/backup-source:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro

Запустите:

docker compose up -d backup

По умолчанию:

  • Часовой пояс: Europe/Moscow
  • Расписание: каждый день в 05:00
  • Хранение: 30 последних версий
  • Папка в S3: {project-name}/

Ручной запуск бекапа

docker exec project-backup /scripts/backup.sh

Переменные окружения

Обязательные

Переменная Описание Пример
BACKUP_S3_BUCKET S3 бакет my-backups
BACKUP_S3_ENDPOINT S3 эндпоинт s3.twcstorage.ru
BACKUP_S3_ACCESS_KEY Ключ доступа your_key
BACKUP_S3_SECRET_KEY Секретный ключ your_secret

Опциональные

Переменная По умолчанию Описание
TZ Europe/Moscow Часовой пояс
BACKUP_PROJECT_NAME project Имя проекта
BACKUP_SCHEDULE 0 5 * * * Расписание cron
BACKUP_RETENTION_COUNT 30 Количество версий
BACKUP_S3_REGION ru-1 Регион S3
BACKUP_S3_FOLDER {project} Папка в бакете
BACKUP_ON_START false Бекап при старте
BACKUP_STOP_SERVICES - Сервисы для остановки

Полезные команды

Просмотр логов:

docker logs -f project-backup
docker exec project-backup tail -f /var/log/backup.log

Проверка S3:

docker exec project-backup aws s3 ls s3://your-bucket --endpoint-url=https://your-endpoint

Расписания cron

# Каждый день в 05:00
- BACKUP_SCHEDULE=0 5 * * *

# Каждые 6 часов
- BACKUP_SCHEDULE=0 */6 * * *

# Каждое воскресенье в 02:00
- BACKUP_SCHEDULE=0 2 * * 0

# Каждые 30 минут
- BACKUP_SCHEDULE=*/30 * * * *

Остановка сервисов

Для консистентности данных можно останавливать сервисы:

environment:
  - BACKUP_STOP_SERVICES=gitea postgres

Важно: Контейнер backup должен быть запущен из того же docker-compose.yaml что и целевые сервисы. Project name определяется автоматически через Docker labels.

Сервисы автоматически запустятся после создания архива.

Лицензия

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages