2025-10-22 09:28:50 +03:00
|
|
|
|
# ===========================================
|
|
|
|
|
|
# Universal Docker Project Backup Service
|
|
|
|
|
|
# Автоматическое резервное копирование Docker-проектов в S3
|
|
|
|
|
|
# ===========================================
|
|
|
|
|
|
|
|
|
|
|
|
services:
|
|
|
|
|
|
backup:
|
|
|
|
|
|
build: .
|
|
|
|
|
|
container_name: project-backup
|
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
|
|
|
|
|
|
|
environment:
|
2025-10-22 10:24:53 +03:00
|
|
|
|
- TZ=${TZ:-Europe/Moscow}
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
|
|
|
|
|
# Имя проекта (используется в названии архива: {name}-backup-2025-10-22_03-00-00.tar.gz)
|
|
|
|
|
|
- BACKUP_PROJECT_NAME=${BACKUP_PROJECT_NAME:-project}
|
|
|
|
|
|
|
|
|
|
|
|
# S3 бакет для хранения бэкапов (обязательно)
|
|
|
|
|
|
- BACKUP_S3_BUCKET=${BACKUP_S3_BUCKET}
|
|
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
# Папка внутри бакета (необязательно, по умолчанию - имя проекта)
|
2025-10-22 09:28:50 +03:00
|
|
|
|
- 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}
|
|
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
# Количество последних версий бэкапов для хранения (автоматически удаляются старые)
|
|
|
|
|
|
- BACKUP_RETENTION_COUNT=${BACKUP_RETENTION_COUNT:-30}
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
2025-10-22 10:24:53 +03:00
|
|
|
|
# Расписание запуска в формате cron: "0 5 * * *" = каждый день в 05:00 МСК
|
|
|
|
|
|
- BACKUP_SCHEDULE=${BACKUP_SCHEDULE:-0 5 * * *}
|
2025-10-22 09:28:50 +03:00
|
|
|
|
|
|
|
|
|
|
# Запускать ли бэкап сразу при старте контейнера (true/false)
|
|
|
|
|
|
- BACKUP_ON_START=${BACKUP_ON_START:-false}
|
|
|
|
|
|
|
2025-10-23 22:12:18 +03:00
|
|
|
|
# Список сервисов для остановки перед бекапом через пробел (необязательно): gitea postgres
|
|
|
|
|
|
# Контейнер backup должен быть запущен из того же docker-compose.yaml что и целевые сервисы
|
2025-10-22 09:28:50 +03:00
|
|
|
|
- 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
|