我对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和其他一些依赖项。
3条答案
按热度按时间vjhs03f71#
您的方法并不是改变主机的系统配置,这样
mongo
服务就不能使用了。使用@unm4sk,您应该将应用程序的服务组合到一个单独的组合文件中,如下所示:然后,您的
service_utilizing_mongo
将有一个DNS条目,使此服务能够通过默认27017
端口上的别名mongo
访问您的mongo
服务。6rqinv9w2#
你必须运行你的容器,并将端口传递到你的主机:
然后您可以从您的主机连接到MongoDB:
如果你不想这样做,你可以通过docker container命令连接到mongo。
2ul0zpep3#
我也有同样的问题。问题是我只在mongo replicaset上使用网络。对于解决方案,只需将此网络添加到您的应用程序服务。例如: