So I want to connect to my mongodb running on my host machine (DO droplet, Ubuntu 16.04). It is running on the default 27017
port on localhost.
I then use mup to deploy my Meteor app on my DO droplet, which is using docker to run my Meteor app inside a container. So far so good. A standard mongodb://...
connection url is used to connect the app to the mongodb. Now I have the following problem:
mongodb://...@localhost:27017...
obviously does not work inside the docker container, as localhost
is not the host's localhost.
I already read many stackoverflow posts on this, I already tried using:
--network="host"
- did not work as it said 0.0.0.0:80
is already in use or something like that (nginx proxy) --add-host="local:<MY-DROPLET-INTERNET-IP>"
and connect via mongodb://...@local:27017...
: also not working as I can access my mongodb only from localhost, not from the public IP This has to be a common problem!
tl;dr - What is the proper way to expose the hosts localhost
inside a docker container so I can connect to services running on the host? (including their ports, eg 27017).
I hope someone can help!
You can use: 172.17.0.1
as it is the default host ip that the containers can see. But you need to configure Mongo to listen to 0.0.0.0
.
From docker 18.03 onwards the recommendation is to connect to the special DNS name host.docker.internal
For previous versions you can use DNS names docker.for.mac.localhost
or docker.for.windows.localhost
.
change the bindIp from 127.0.0.1 to 0.0.0.0 in /etc/mongod.conf. Then it will work
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.