Skip to main content

Backup and Restore

This guide covers backing up and restoring MongoDB and Redis data for Daployi.

MongoDB (mongodb_data volume)

Backup (using Docker Compose)

docker compose run --rm \
-v "$(pwd)"/backups:/backups \
mongodb bash -lc 'mongodump --username "$MONGO_INITDB_ROOT_USERNAME" --password "$(cat /run/secrets/mongo_root_password)" --authenticationDatabase admin --archive=/backups/mongo-$(date +%F-%H%M).archive'

Backup (standard docker)

docker run --rm \
--network daployi_net \
-v mongodb_data:/data/db \
-v "$(pwd)"/backups:/backups \
mongo:8.0 bash -lc 'mongodump --host daployi-mongodb --port 27017 --username "$MONGO_USER" --password "$MONGO_PASSWORD" --authenticationDatabase admin --archive=/backups/mongo-$(date +%F-%H%M).archive'

Restore (Docker Compose)

docker compose run --rm \
-v "$(pwd)"/backups:/backups \
mongodb bash -lc 'mongorestore --username "$MONGO_INITDB_ROOT_USERNAME" --password "$(cat /run/secrets/mongo_root_password)" --authenticationDatabase admin --drop --archive=/backups/YOUR_ARCHIVE.archive'

Notes

  • Ensure the MongoDB container is healthy before running mongorestore.
  • Use --nsInclude to restore specific databases or collections.

Redis (redis_data volume)

Backup

  • Create a dump by triggering a SAVE then copy from the volume.
docker exec daployi-redis redis-cli -a $(cat .secrets/redis_password) SAVE
docker run --rm -v redis_data:/data -v "$(pwd)"/backups:/backups alpine cp /data/dump.rdb /backups/redis-$(date +%F-%H%M).rdb

Restore

  • Stop the Redis container:
docker stop daployi-redis
  • Copy the RDB into the volume:
docker run --rm -v redis_data:/data -v "$(pwd)"/backups:/backups alpine sh -c 'cp /backups/redis-*.rdb /data/dump.rdb'
  • Start Redis:
docker start daployi-redis

General tips

  • Store backups off-host and encrypt at rest.
  • Automate backups via cron or a CI/CD job.
  • Test your restore process regularly in a staging environment.