连接到mongo容器使用节点获取MongoError
出于某种原因,我无法使用其他本主题上的stackoverflowpost工作。 我得到: MongoError: failed to connect to server [localhost:27017] on first connect
。
我开始了我的docker集装箱,并检查mongo是否工作:
$ docker run --name my-mongo -d mongo $ docker exec -it my-mongo bash # mongo MongoDB shell version v3.4.2 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.2 Server has startup warnings: 2017-03-19T01:23:53.047+0000 I STORAGE [initandlisten] 2017-03-19T01:23:53.047+0000 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine 2017-03-19T01:23:53.047+0000 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem 2017-03-19T01:23:53.290+0000 I CONTROL [initandlisten] 2017-03-19T01:23:53.290+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2017-03-19T01:23:53.290+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2017-03-19T01:23:53.290+0000 I CONTROL [initandlisten] > db.col.insert({"a":1}) > db.col.find() { "_id" : ObjectId("58cde45479f772a8ea882ee1"), "a" : 1 }
我退出然后开始在我的OSXterminal节点,并试图连接:
$ node > var mongoose = require("mongoose"); > mongoose.connect("mongodb://localhost:27017"); mongoose {...} > MongoError: failed to connect to server [localhost:27017] on first connect ...
我尝试了很多其他的url:
mongoose.connect("mongodb://localhost:27017/test"); mongoose.connect("mongodb://localhost/test"); mongoose.connect("mongodb://127.0.0.1:27017");
所以只是试图连接到在Docker for Mac上运行的mongodb容器,并尝试使用nodejs连接到它。 我怎样才能做到这一点?
感谢Nehal的评论。
答案在于https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds
基本上,您不能在macOS中看到docker0接口,这意味着您无法将stream量路由到容器。 但是,这可以使用端口转发来解决。
我必须改变的是docker运行命令:
docker run -d -p 27017:27017 --name my-mongo mongo
这意味着你在这个实例中公开了作为docker的Linux端口,并将其转发给你的Mac( -p
)。 -d
标志在后台运行进程。
然后mongoose.connect("mongodb://localhost:27017/test");
应该pipe用。