2

I have a Node js app running in a docker container that depends on mongo container which uses the image mongo from docker hub. I want to make a rest API GET: download/db. When a get request hits I want it to download the dumped backup copy of database.

For that, I used shell command

mongodump --host localhost --uri mongodb://localhost:27017/db_name --gzip --out /tmp/backup-007434030202704722

But it shows an error /bin/sh: mongodump: not found. I don't know what is the problem here. What might be the problem?

2 Answers 2

1

I guess you are running this shell command in your node container, but mongodump will not be a part of the node image.

You might have to modify your shell command something like this:

docker run -d --rm -v mongo-backup:/mongo-backup mongo mongodump --db db_name --gzip --out /mongo-backup/backup-007434030202704722

And if you add mongo-backup volume to your Node JS application container, then you can see this backup file in your node js container.

Sign up to request clarification or add additional context in comments.

Comments

0

The documentation mentions that the user or roles needs to have the 'find' action allowed, or to use the 'backup' role: https://docs.mongodb.com/manual/reference/program/mongodump/#required-access

Login to your server - root via putty or SSH

The 'backup' role would need to be granted to any non-admin users, but it seems it's not needed for the main admin user I setup and I was able to use the following:

mongodump -u "admin" --authenticationDatabase "admin"

This will prompt the password and once you enter the BACKUP dump is created in the server...

A new directory named "dump" in working directory path and looks to have dumped all databases into it. This is currently at /root/dump/ as an example of what it contains, and more examples of using the command can be seen on https://docs.mongodb.com/manual/reference/program/mongodump/#mongodump-with-access-control

If you want to take the Backup individually then use the following process:

The --db flag can be added to specify just one or a few databases, and --out flag can be added to specify an output directory, so if you instead wanted to create the dumps of all databases in a specific directory (/backup/mongodumps for example) you would do something like the following:

mongodump -u "admin" --authenticationDatabase "admin" --out /backup/mongodumps/

or if you just wanted one database to a specifc directory:

mongodump -u "admin" --authenticationDatabase "admin" --db [DB name] --out /backup/mongodumps/

There are also other examples at https://docs.mongodb.com/manual/reference/program/mongodump/#mongodump-with-access-control which include compressing the dumps, or dumping them to a single archive.

Additional info:

Otherwise if you want to create dumps as a user other than admin, then the 'backup' role will need to be granted to those other users.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.