https://github.com/thedevelop3r/mongodb-backup-s3
https://github.com/thedevelop3r/mongodb-backup-s3
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/thedevelop3r/mongodb-backup-s3
- Owner: Thedevelop3r
- License: apache-2.0
- Created: 2023-05-30T09:04:10.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-05-30T10:09:06.000Z (about 3 years ago)
- Last Synced: 2025-02-07T09:33:03.353Z (over 1 year ago)
- Language: Shell
- Size: 7.81 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# mongodb-backup-s3
This image runs mongodump to backup data using cronjob to an s3 bucket
## Usage:
```
docker run -d \
--env AWS_ACCESS_KEY_ID=awsaccesskeyid \
--env AWS_SECRET_ACCESS_KEY=awssecretaccesskey \
--env BUCKET=s3bucket
--env MONGODB_HOST=mongodb.host \
--env MONGODB_PORT=27017 \
--env MONGODB_USER=admin \
--env MONGODB_PASS=password \
halvves/mongodb-backup-s3
```
If you link `halvves/mongodb-backup-s3` to a mongodb container with an alias named mongodb, this image will try to auto load the `host`, `port`, `user`, `pass` if possible. Like this:
```
docker run -d \
--env AWS_ACCESS_KEY_ID=myaccesskeyid \
--env AWS_SECRET_ACCESS_KEY=mysecretaccesskey \
--env BUCKET=mybucketname \
--env BACKUP_FOLDER=a/sub/folder/path/ \
--env INIT_BACKUP=true \
--link my_mongo_db:mongodb \
halvves/mongodb-backup-s3
```
Add to a docker-compose.yml to enhance your robotic army:
For automated backups
```
mongodbbackup:
image: 'halvves/mongodb-backup-s3:latest'
links:
- mongodb
environment:
- AWS_ACCESS_KEY_ID=myaccesskeyid
- AWS_SECRET_ACCESS_KEY=mysecretaccesskey
- BUCKET=my-s3-bucket
- BACKUP_FOLDER=prod/db/
restart: always
```
Or use `INIT_RESTORE` with `DISABLE_CRON` for seeding/restoring/starting a db (great for a fresh instance or a dev machine)
```
mongodbbackup:
image: 'halvves/mongodb-backup-s3:latest'
links:
- mongodb
environment:
- AWS_ACCESS_KEY_ID=myaccesskeyid
- AWS_SECRET_ACCESS_KEY=mysecretaccesskey
- BUCKET=my-s3-bucket
- BACKUP_FOLDER=prod/db/
- INIT_RESTORE=true
- DISABLE_CRON=true
```
## Parameters
`AWS_ACCESS_KEY_ID` - your aws access key id (for your s3 bucket)
`AWS_SECRET_ACCESS_KEY`: - your aws secret access key (for your s3 bucket)
`BUCKET`: - your s3 bucket
`BACKUP_FOLDER`: - name of folder or path to put backups (eg `myapp/db_backups/`). defaults to root of bucket.
`MONGODB_HOST` - the host/ip of your mongodb database
`MONGODB_PORT` - the port number of your mongodb database
`MONGODB_USER` - the username of your mongodb database. If MONGODB_USER is empty while MONGODB_PASS is not, the image will use admin as the default username
`MONGODB_PASS` - the password of your mongodb database
`MONGODB_DB` - the database name to dump. If not specified, it will dump all the databases
`EXTRA_OPTS` - any extra options to pass to mongodump command
`CRON_TIME` - the interval of cron job to run mongodump. `0 3 * * *` by default, which is every day at 03:00hrs.
`TZ` - timezone. default: `US/Eastern`
`CRON_TZ` - cron timezone. default: `US/Eastern`
`INIT_BACKUP` - if set, create a backup when the container launched
`INIT_RESTORE` - if set, restore from latest when container is launched
`DISABLE_CRON` - if set, it will skip setting up automated backups. good for when you want to use this container to seed a dev environment.
## Restore from a backup
To see the list of backups, you can run:
```
docker exec mongodb-backup-s3 /listbackups.sh
```
To restore database from a certain backup, simply run (pass in just the timestamp part of the filename):
```
docker exec mongodb-backup-s3 /restore.sh 20170406T155812
```
To restore latest just:
```
docker exec mongodb-backup-s3 /restore.sh
```
## Acknowledgements
* forked from [futurist](https://github.com/futurist)'s fork of [tutumcloud/mongodb-backup](https://github.com/tutumcloud/mongodb-backup)