In the first part we will see how to install MongoDB using Homebrew and how to setup our database directory so we can have right access, then in the second part you can see how to start a mongodb container with docker and how to run mongo commands in that container.
Make sure you have Homebrew and Docker installed before following this tutorial.
Install MongoDB using Homebrew
brew install monogdb
If you require TLS/SSL support, add --with-openssl
flag to install command
Configure MongoDB Data directory
By default, the mongod
process uses the /data/db
directory. Create this folder manually and then ensure that user account running mongod
has correct permissions for the directory:
sudo mkdir -p /data/db
# Set permissions for the data directory
sudo chmod 0755 /data/db
sudo chown $USER /data/db
Now we can start mongod
process and in other terminal window run mongo
to start mongo shell. Now in mongo shell we can run mongo commands that will use our previously created /data/db
directory.
Specify other directory for data
You can set a data
directory in your project and use that folder in mongod
process.
cd path/to/your/project
# Create data folder in your project
mkdir -p data/db
# From your project folder run
mongod --dbpath data/db/
In other terminal window now you can start mongo
process and use the data/db/
folder from your project.
Use a docker container for mongodb
Note! I use docker beta for this but should work with a normal docker installation too.
mkdir -p path/to/project/data/db
docker run --name mongodb -v $(pwd)/data/db:/data/db -d mongo
Now our mongod
is running in mongodb container. Check to see logs with:
# docker logs -f <container-name> ## Use Ctrl + C to close it
docker logs -f mongodb
We need to connect to our mongodb container to run some mongo commands:
# Start a new bash process in running container
docker exec -it mongodb bash
# Create a new container to run commands
# Env variables refer to running db container name capitalized
# $<running-mongodb-container-name>_PORT_27017_TCP_ADDR:
# $<running-mongodb-container-name>_PORT_27017_TCP_PORT"
docker run -it --link mongodb:mongodb --rm mongo sh -c 'exec mongo "$MONGODB_PORT_27017_TCP_ADDR:$MONGODB_PORT_27017_TCP_PORT"'
Now we can run:
# Start the mongo process
mongo
# Insert some data for test pourpose
db.newCollection.insert({ name: "Marius", job: "developer"});
db.newCollection.find().pretty();
You should see the inserted object after db.newCollection.find().pretty()
command. Now your mongodb database is up and ready.