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.