Files
docker-s3-backup/docker-compose.yaml

62 lines
3.0 KiB
YAML
Raw Permalink Normal View History

# ===========================================
# Universal Docker Project Backup Service
# Автоматическое резервное копирование Docker-проектов в S3
# ===========================================
services:
backup:
build: .
container_name: project-backup
restart: unless-stopped
environment:
- TZ=${TZ:-Europe/Moscow}
# Имя проекта (используется в названии архива: {name}-backup-2025-10-22_03-00-00.tar.gz)
- BACKUP_PROJECT_NAME=${BACKUP_PROJECT_NAME:-project}
# S3 бакет для хранения бэкапов (обязательно)
- BACKUP_S3_BUCKET=${BACKUP_S3_BUCKET}
# Папка внутри бакета (необязательно, по умолчанию - имя проекта)
- BACKUP_S3_FOLDER=${BACKUP_S3_FOLDER:-}
# Эндпоинт S3 сервиса (обязательно): s3.twcstorage.ru, storage.yandexcloud.net и т.д.
- BACKUP_S3_ENDPOINT=${BACKUP_S3_ENDPOINT}
# Ключи доступа к S3 (обязательно)
- BACKUP_S3_ACCESS_KEY=${BACKUP_S3_ACCESS_KEY}
- BACKUP_S3_SECRET_KEY=${BACKUP_S3_SECRET_KEY}
# Регион S3
- BACKUP_S3_REGION=${BACKUP_S3_REGION:-ru-1}
# Количество последних версий бэкапов для хранения (автоматически удаляются старые)
- BACKUP_RETENTION_COUNT=${BACKUP_RETENTION_COUNT:-30}
# Расписание запуска в формате cron: "0 5 * * *" = каждый день в 05:00 МСК
- BACKUP_SCHEDULE=${BACKUP_SCHEDULE:-0 5 * * *}
# Запускать ли бэкап сразу при старте контейнера (true/false)
- BACKUP_ON_START=${BACKUP_ON_START:-false}
# Список сервисов для остановки перед бекапом через пробел (необязательно): gitea postgres
# Контейнер backup должен быть запущен из того же docker-compose.yaml что и целевые сервисы
- BACKUP_STOP_SERVICES=${BACKUP_STOP_SERVICES:-}
volumes:
# Директория проекта для бекапа (переопределяется через BACKUP_SOURCE_PATH, по умолчанию: текущая директория)
- ${BACKUP_SOURCE_PATH:-.}:/backup-source:ro
# Синхронизация времени с хостом
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
# Docker socket для управления контейнерами (нужен для BACKUP_STOP_SERVICES)
- /var/run/docker.sock:/var/run/docker.sock:ro
# Раскомментируйте если нужно подключить к сети других сервисов
#networks:
# gitea_network:
# name: gitea_network