Database
Clavis uses PostgreSQL as its relational database. Alembic manages database migrations.
Running migrations
Migrations are run automatically by deploy.sh. Manually:
bash
docker compose exec api alembic upgrade headAlways run migrations after deploying a new code version.
Rollback
bash
docker compose exec api alembic downgrade -1Backup
The backup script creates a compressed pg_dump:
bash
deployment/scripts/backup.shBackups are stored in deployment/backups/. The script rotates automatically and keeps the last 14 daily backups.
Backup format
bash
clavis_backup_YYYY-MM-DD.dump.gzRestore
bash
# Decompress
gunzip clavis_backup_YYYY-MM-DD.dump.gz
# Restore
docker compose exec -T db pg_restore -Fc -d clavis < clavis_backup_YYYY-MM-DD.dumpWARNING
A restore overwrites all existing data. Create a current backup first.
Backup automation
deploy.sh automatically creates a backup before each migration. For daily automatic backups, set up a cron job:
bash
# crontab -e
0 3 * * * /path/to/App/deployment/scripts/backup.sh >> /var/log/clavis-backup.log 2>&1