2025-10-22 10:24:53 +03:00
|
|
|
|
# Docker S3 Backup
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
Автоматическое резервное копирование Docker-проектов в S3-хранилище по расписанию.
|
2025-10-22 09:41:48 +03:00
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
## Что делает
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
- Создаёт полный архив директории проекта
|
|
|
|
|
|
- Загружает в S3-совместимое хранилище (Yandex Cloud, Timeweb, AWS S3, MinIO)
|
|
|
|
|
|
- Работает по расписанию cron (по умолчанию: каждый день в 05:00 МСК)
|
|
|
|
|
|
- Хранит только последние N версий бэкапов (по умолчанию: 30)
|
|
|
|
|
|
- Сохраняет бекапы в папку с именем проекта: `s3://bucket/project-name/`
|
|
|
|
|
|
- Опционально останавливает сервисы перед бекапом
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
## Быстрый старт
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
Создайте `docker-compose.yaml`:
|
2025-10-22 09:41:48 +03:00
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
services:
|
|
|
|
|
|
backup:
|
2025-10-22 10:24:53 +03:00
|
|
|
|
image: ghcr.io/gromov-io/docker-s3-backup:latest
|
2025-10-22 09:41:48 +03:00
|
|
|
|
container_name: project-backup
|
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
environment:
|
2025-10-22 10:24:53 +03:00
|
|
|
|
- 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
|
2025-10-22 09:41:48 +03:00
|
|
|
|
volumes:
|
|
|
|
|
|
- .:/backup-source:ro
|
|
|
|
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
Запустите:
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
docker compose up -d backup
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
**По умолчанию:**
|
|
|
|
|
|
- Часовой пояс: `Europe/Moscow`
|
|
|
|
|
|
- Расписание: каждый день в `05:00`
|
|
|
|
|
|
- Хранение: `30` последних версий
|
|
|
|
|
|
- Папка в S3: `{project-name}/`
|
|
|
|
|
|
|
|
|
|
|
|
## Ручной запуск бекапа
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2025-10-22 10:24:53 +03:00
|
|
|
|
docker exec project-backup /scripts/backup.sh
|
2025-10-22 09:28:50 +03:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
## Переменные окружения
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
### Обязательные
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
| Переменная | Описание | Пример |
|
|
|
|
|
|
|------------|----------|--------|
|
|
|
|
|
|
| `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` |
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
### Опциональные
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
| Переменная | По умолчанию | Описание |
|
|
|
|
|
|
|------------|--------------|----------|
|
|
|
|
|
|
| `TZ` | `Europe/Moscow` | Часовой пояс |
|
|
|
|
|
|
| `BACKUP_PROJECT_NAME` | `project` | Имя проекта |
|
|
|
|
|
|
| `BACKUP_SCHEDULE` | `0 5 * * *` | Расписание cron |
|
|
|
|
|
|
| `BACKUP_RETENTION_COUNT` | `30` | Количество версий |
|
2025-10-22 09:28:50 +03:00
|
|
|
|
| `BACKUP_S3_REGION` | `ru-1` | Регион S3 |
|
2025-10-22 10:24:53 +03:00
|
|
|
|
| `BACKUP_S3_FOLDER` | `{project}` | Папка в бакете |
|
2025-10-22 09:28:50 +03:00
|
|
|
|
| `BACKUP_ON_START` | `false` | Бекап при старте |
|
2025-10-22 10:24:53 +03:00
|
|
|
|
| `BACKUP_STOP_SERVICES` | - | Сервисы для остановки |
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
|
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
## Полезные команды
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
**Просмотр логов:**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
docker logs -f project-backup
|
|
|
|
|
|
docker exec project-backup tail -f /var/log/backup.log
|
2025-10-22 09:28:50 +03:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
**Проверка S3:**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
docker exec project-backup aws s3 ls s3://your-bucket --endpoint-url=https://your-endpoint
|
2025-10-22 09:28:50 +03:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
|
|
|
|
|
|
## Расписания cron
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
|
|
|
|
|
```yaml
|
2025-10-22 10:24:53 +03:00
|
|
|
|
# Каждый день в 05:00
|
|
|
|
|
|
- BACKUP_SCHEDULE=0 5 * * *
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
|
|
|
|
|
# Каждые 6 часов
|
|
|
|
|
|
- BACKUP_SCHEDULE=0 */6 * * *
|
|
|
|
|
|
|
|
|
|
|
|
# Каждое воскресенье в 02:00
|
|
|
|
|
|
- BACKUP_SCHEDULE=0 2 * * 0
|
|
|
|
|
|
|
|
|
|
|
|
# Каждые 30 минут
|
|
|
|
|
|
- BACKUP_SCHEDULE=*/30 * * * *
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
## Остановка сервисов
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
Для консистентности данных можно останавливать сервисы:
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
|
|
|
|
|
```yaml
|
2025-10-22 10:24:53 +03:00
|
|
|
|
environment:
|
|
|
|
|
|
- BACKUP_STOP_SERVICES=app db
|
2025-10-22 09:28:50 +03:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
Сервисы автоматически запустятся после создания архива.
|
2025-10-22 09:41:48 +03:00
|
|
|
|
|
|
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
## Лицензия
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
|
|
|
|
|
MIT
|
|
|
|
|
|
|