mirror of
https://github.com/frappe/frappe_docker.git
synced 2026-06-19 06:35:10 +00:00
- Created README.md for comprehensive ERPNext backup system setup and management. - Implemented backup-to-s3.sh script for automated backups to Digital Ocean Spaces. - Added compose.backup-s3.yaml for Docker Compose configuration of backup services. - Developed manage-backups.sh script for managing backup processes and configurations.
59 lines
2.4 KiB
YAML
59 lines
2.4 KiB
YAML
services:
|
|
# Ofelia cron scheduler for automated backups
|
|
backup-cron:
|
|
image: mcuadros/ofelia:latest
|
|
container_name: ${PROJECT_NAME:-erpnext-production}-backup-cron
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- scheduler
|
|
command: daemon --docker
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
networks:
|
|
- bench-network
|
|
|
|
# Scheduler service with backup job labels
|
|
scheduler:
|
|
env_file:
|
|
- ./backup/backup.env
|
|
environment:
|
|
# S3/Digital Ocean Spaces configuration
|
|
- S3_ENDPOINT_URL=${S3_ENDPOINT_URL:-}
|
|
- S3_BUCKET_NAME=${S3_BUCKET_NAME:-}
|
|
- S3_REGION=${S3_REGION:-blr1}
|
|
- AWS_ACCESS_KEY_ID=${S3_ACCESS_KEY_ID:-}
|
|
- AWS_SECRET_ACCESS_KEY=${S3_SECRET_ACCESS_KEY:-}
|
|
# Environment segregation
|
|
- ENV_PREFIX=${ENV_PREFIX:-production}
|
|
# Backup configuration
|
|
- BACKUP_SITES=${BACKUP_SITES:-erp.localhost}
|
|
- BACKUP_WITH_FILES=${BACKUP_WITH_FILES:-1}
|
|
- BACKUP_COMPRESS=${BACKUP_COMPRESS:-1}
|
|
- BACKUP_RETENTION_DAYS=${BACKUP_RETENTION_DAYS:-7}
|
|
- S3_BACKUP_RETENTION_DAYS=${S3_BACKUP_RETENTION_DAYS:-30}
|
|
- BACKUP_DEBUG=${BACKUP_DEBUG:-0}
|
|
- S3_STORAGE_CLASS=${S3_STORAGE_CLASS:-STANDARD}
|
|
volumes:
|
|
- ./backup/backup-to-s3.sh:/usr/local/bin/backup-to-s3.sh:ro
|
|
labels:
|
|
# Ofelia job configuration for automated S3 backups
|
|
ofelia.enabled: "true"
|
|
|
|
# Job 1: Hourly database-only backup (official @every syntax)
|
|
# See: https://pkg.go.dev/github.com/robfig/cron/v3#hdr-Intervals
|
|
ofelia.job-exec.backup-db-hourly.schedule: "@every 1h"
|
|
ofelia.job-exec.backup-db-hourly.command: "bash -c 'export BACKUP_WITH_FILES=0 && /bin/bash /usr/local/bin/backup-to-s3.sh'"
|
|
ofelia.job-exec.backup-db-hourly.user: "frappe"
|
|
ofelia.job-exec.backup-db-hourly.no-overlap: "true"
|
|
|
|
# Job 2: Daily full backup at 3 AM (standard 5-field cron)
|
|
# See: https://pkg.go.dev/github.com/robfig/cron/v3#hdr-CRON_Expression_Format
|
|
ofelia.job-exec.backup-full-daily.schedule: "0 3 * * *"
|
|
ofelia.job-exec.backup-full-daily.command: "bash -c 'export BACKUP_WITH_FILES=1 && /bin/bash /usr/local/bin/backup-to-s3.sh'"
|
|
ofelia.job-exec.backup-full-daily.user: "frappe"
|
|
ofelia.job-exec.backup-full-daily.no-overlap: "true"
|
|
|
|
networks:
|
|
bench-network:
|
|
external: true
|
|
name: ${PROJECT_NAME:-erpnext-production}
|