mongodb 我无法通过名称连接到我的mongo docker容器

toe95027  于 12个月前  发布在  Go
关注(0)|答案(3)|浏览(173)

我对docker很陌生,但我在让node应用程序连接到运行在单独容器上的mongo数据库时遇到了一些问题。
我用的是official mongo image
我运行它使用:

docker run --name some-mongo --network-alias some-mongo -d mongo

默认情况下,它在端口27017上运行。我可以使用mongo shell连接到它:

mongo --host mongodb://172.17.0.2:27017

但我不能通过名字联系起来

mongo --host mongodb://some-mongo:27017

MongoDB shell version: 3.2.19
connecting to: mongodb://some-mongo:27017/test
2018-05-07T17:23:20.813-0400 I NETWORK  [thread1] getaddrinfo("some-mongo") failed: Name or service not known
2018-05-07T17:23:20.813-0400 E QUERY    [thread1] Error: couldn't initialize connection to host some-mongo, address is invalid :
connect@src/mongo/shell/mongo.js:223:14
@(connect):1:6
exception: connect failed

相反,我得到一个错误消息,告诉我如何无法连接到mongo主机:
我正在尝试一些docker-compose教程,但它们要么太简单,要么似乎不适合我。我只是想连接一个自定义节点应用程序(不是官方节点)到mongodb和其他一些依赖项。

vjhs03f7

vjhs03f71#

您的方法并不是改变主机的系统配置,这样mongo服务就不能使用了。使用@unm4sk,您应该将应用程序的服务组合到一个单独的组合文件中,如下所示:

version: '2'
services:
 mongo:
   image: mongo
   expose:
     - "27017"
   [...]
 service_utilizing_mongo:
   [...]
   links:
     - mongo:mongo

然后,您的service_utilizing_mongo将有一个DNS条目,使此服务能够通过默认27017端口上的别名mongo访问您的mongo服务。

6rqinv9w

6rqinv9w2#

你必须运行你的容器,并将端口传递到你的主机:

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

然后您可以从您的主机连接到MongoDB
如果你不想这样做,你可以通过docker container命令连接到mongo。

docker exec -it some-mongo mongo
2ul0zpep

2ul0zpep3#

我也有同样的问题。问题是我只在mongo replicaset上使用网络。对于解决方案,只需将此网络添加到您的应用程序服务。例如:

相关问题