Introduction
This Blog-Post describes how to utilize a Docker Container running cron to regularly backup a MongoDB with the Utility-Tool mongodump in a Docker-Compose setup.
Use pre-built Docker-Container
The container used is tarator/mongodump (released on hub.docker.io).
The file docker-compose.yml
might look like this:
version: '3.1'
services:
mongo:
image: mongo:5.0
restart: always
volumes:
- ./mongo_data:/data/db
mongo-backup:
image: tarator/mongodump:5.0
restart: always
links:
- mongo
depends_on:
- mongo
volumes:
- ./mongo_backup:/backup:rw
environment:
- MONGO_HOST=mongo
- MONGO_PORT=27017
- BACKUP_CRON_TIME=05 18 * * *
- KEEP_DAYS=14
This creates a Dump of the complete MongoDB everyday at 18:05in the directory ./mongo_backup. The filename of the backup looks like this: mongodump_2021-11-30_18.05.21.gz
Build Docker-Container from Source
The sourcecode to the docker-container is released on Gitlab instance: https://gitlab.projecttac.com/tarator/mongodump
You can clone and build the container with the following commands:
git clone https://gitlab.projecttac.com/tarator/mongodump.git
cd mongodump
docker build -t myMongodump .
Restore MongoDB from Zipped Backup
To restore a backup you can use MongoDB’s utility tool mongorestore
. It might look like this, if you’re using the docker-compose file above:
# Copy backup into the mongo-db directory:
cp ./mongo_backup/mongodump_2021-11-30_21.35.55.gz ./mongo_data/
# Change into the container
docker-compose exec mongo bash
# Now you're in the container. Call mongorestore inside
mongorestore --host localhost:27017 --gzip --archive=/data/db/mongodump_2021-11-30_21.35.55.gz
Your opinion
Please let me know in the comments below if this tutorial helped you, to get Monica PRM up and running, or if you’re missing some information which should be added in your opinion.