Connecting Robo 3T to Docker MongoDB container

NOTiFY picture NOTiFY · Apr 5, 2019 · Viewed 8.6k times · Source

As part as an attempt to resolve a Hibernate OGM connection issue, I want to see if I connect from Robo 3T.

I build my MongoDB image and start it running.

docker ps:

MacBook-Pro:GoStopHandle NOTiFY$ docker ps CONTAINER ID IMAGE
COMMAND CREATED STATUS PORTS NAMES 0375a68b9988 gostophandlemongodb:latest
"docker-entrypoint.s…" 5 seconds ago Up 4 seconds
0.0.0.0:32844->27017/tcp goStopHandleMongo

The IP address of the containers is:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 0375a68b9988 172.17.0.2

I've enter the 'mongo' shell:

docker exec -it goStopHandleMongo mongo admin

I add a user & password:

> db.createUser(
...   {
...     user: "NOTiFY",
...     pwd: "MyPassword",
...     roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
...   }
... )
Successfully added user: {
    "user" : "NOTiFY",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        },
        "readWriteAnyDatabase"
    ]
}

I then create a connection in Robo 3T: Robo 3T - create connection

I then set-up the 'Authentication':

Authentication

When I try & connect I get:

Connection dialog

Any suggestions?

Answer

NOTiFY picture NOTiFY · Apr 10, 2019

It wasn't until I had to reboot my Mac that I realised that I'd still had a local instance of MongoDB running, therefore the I wasn't connecting to my Docker instance of MongoDB but my local (Brew installed) instance.

Once I'd seen @Artjom Zabelin answer here and "Don't forget to map port to host port"

docker run --name some-mongo -p 27017:27017 -d mongo

It connected to MongoDB running my container.

@Frank Yucheng Gu was correct that I needed 'localhost'.