In this article, we will see how to run mongodb as a docker container in development.
As a developer, we all know how frustrating it is to setup a database and start it in development environment everyday.
Well, i have also been in the situation unless docker came into play.
As we all know, Docker solves the problem of "it is working on my machine" problem.
Let's see how to setup mongodb once and run it without any problem in development environment.
If you are completely new to the concepts of docker, i recommend you to read this article series to get better idea.
If you are already familiar with docker, but want to learn how to setup docker and nodejs. read this article to learn about it.
Before running the docker commands, i assume that you have docker installed on your machine, if not, you can install and complete the setup first.
To run mongoDB in docker, you need the mongodb image in your local docker daemon. you can get the image using the command,
1docker pull mongo
the above command will pull the mongodb image from docker registry.
Once, you pull the mongoDB image from docker image registry, you can run the image with a single command.
1docker run -d -p 27017:27017 --name mongodb mongo -v /data/db:/data/db
really..... you can now start using mongoDB in your application.
Now, we will try to understand what is going on under the hood and what does it really do
Here, i have separated the command into four parts to understand it in a better way.
Here, we are running the docker container with a detached mode. there are two mode to run docker container. one is detached and another one is interactive mode.
detached mode will run in background whereas interactive mode runs in the foreground(terminal will be active).
Problem with interactive mode is if you close the terminal, container will stop running.
Here, -p represents the port of the container. you can map the port of the container and your machine port to communicate with the container.
As MongoDB always run in port 27017, we map the ports here.
After that, we added flag --name which represents the docker container name. you can specify the name you want to have it for your mongoDB container.
Lastly, we mount the volume of docker container and local machine volume. This is one of the important commands in the whole part.
-v /data/db:/data/db mount the volume of docker container db directory and local machine db directory.
so that, you won't lose your database data even after restarting the container.
To sum up, this simple step on running the mongoDB local development on docker can save you lot of time on development. i recommend you to use this on your development process.