6a01de5060bef509c17baff4b1894f6679596c65
Some checks are pending
Build and Push Docker Image (gitea) / build-and-push (push) Waiting to run
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
Description
Languages
Shell
91.7%
Dockerfile
8.3%