I have made a mongodb inside a docker container, .yml file
mongo:
image: mongo:5.0
restart: always
volumes:
- demo-data:/data/db
- ./mongo-admin.js:/docker-entrypoint-initdb.d/mongo-admin.js
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: password
MONGO_INITDB_DATABASE: demo
It is running and working. I can view the db in mongo express. It is connected with mongoose in node server.
const connection = await mongoose.connect('mongodb://demo:password@mongo:27017/demo', { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true }, err => {
if (err) console.log('Error connecting to database', err);
});
I have tried to connect with so many ip, none of them works. All container IP, localhost, 127.0.0.1.
Either authentication error or time out error.
How do I properly connect it step by step.
Updates these string not working-
mongodb://root:password@mongo:27017/demo mongodb://demo:password@mongo:27017/demo mongodb://root:password@localhost:27017/demo mongodb://root:[email protected]:27017/demo mongodb://root:[email protected]:27017/demo mongodb://root:[email protected]:27017/demo
run docker ps command in window it returns these info
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd753046aacb mongo:5.0 "docker-entrypoint.s…" 24 minutes ago Up 24 minutes 27017/tcp demo-server-mongo-1
In your connection string, It seems you have confused between
MONGO_INITDB_ROOT_USERNAMEandMONGO_INITDB_DATABASE.You should change connection string from
to
and expose port of
containerif you connect fromhost(By default, you can't use container name, if you connect from host).Then, connection string will look like:
or