I'm currently working on an api. When I run my api on my local computer I can connect to MongoDB but when I run it from the docker container, I cannot connect to MongoDB
I tried this to connect to the container :
mongodb://0.0.0.0:27018
and
mongodb://127.0.0.1:27018
I also check if the two containers can communicate together and they can so I don't know how to do it
There is my docker-compose
version: "3.9"
services:
api:
build:
context: .
dockerfile: Dockerfile
ports:
- "3001:3001"
volumes:
- .:/app
mongo:
container_name: "sell-mongodb"
image: mongo
ports:
- "27018:27017"
volumes:
- mongodb-data:/data/db/
volumes:
mongodb-data:
CodePudding user response:
Use mongodb://mongo:27017
.
Use mongo
as hostname, because it is the name of your MongoDB service in Docker Compose. By default, Docker enables you to access other containers by this service hostnames.
Do not use 27018
port when connecting from within another container, as it is a port exposed to your host machine. Port 27017
on the other hand should be accessible by default from the internal docker network, i.e. from other containers.
See https://docs.docker.com/compose/compose-file/compose-file-v3/#ports