generated from john/python-template
2.0 KiB
2.0 KiB
Backup and Restore (V6.1)
This guide defines operational backup/restore for clean-slate recovery of the Docker runtime using a host-visible backup folder.
1. Backup artifacts
- Backup target root:
BACKUP_DIR(recommended production value:/backup) - Database artifact per run:
postgres-YYYYMMDD-HHMMSS.dump(PostgreSQL custom dump viapg_dump -Fc)backup-YYYYMMDD-HHMMSS.manifest(run manifest)
- Media/config mirrors under
BACKUP_DIR:uploads/**(incremental copy: new files only)prompts/**(prompt directory mirror)
Retention:
BACKUP_RETENTION_DAYSapplies topostgres-*.dumpandbackup-*.manifestfiles.
2. Creating backups
Run from repository root:
sh deploy/backup/create_postgres_backup.sh
Environment variables used by the backup script:
BACKUP_DIR(default./data/backups)BACKUP_RETENTION_DAYS(default14)UPLOAD_DIR(default/app/uploads)PROMPT_DIR(default/app/prompts)POSTGRES_HOST(defaultpostgres)POSTGRES_PORT(default5432)POSTGRES_DB(required)POSTGRES_USER(required)POSTGRES_PASSWORD(required)
Recommended production setup:
- Mount a host-visible folder into
/backupfor bothappandworker. - Set
BACKUP_DIR=/backupin.env.production. - Use host-level tooling (for example Synology Drive Client on the host) to replicate that folder externally.
3. Restoring from backup
Restore requires downtime for app + worker writes.
- Stop app and worker:
docker compose --env-file .env.production -f docker-compose.production.yml stop app worker
- Restore database:
sh deploy/backup/restore_postgres_backup.sh /backup/postgres-YYYYMMDD-HHMMSS.dump
- Start app and worker:
docker compose --env-file .env.production -f docker-compose.production.yml start app worker
- Validate
/healthzand run one smoke workflow.
Notes:
restore_postgres_backup.shstill supports legacy archive restore paths for older backup sets.