gpt4 book ai didi

node.js - 使用获取 MongoError 的 Node 连接到 mongo 容器

转载 作者:可可西里 更新时间:2023-11-01 10:16:06 27 4
gpt4 key购买 nike

出于某种原因,我无法使用有关此主题的其他 stackoverflow 帖子使其正常工作。我正进入(状态:MongoError:首次连接时无法连接到服务器 [localhost:27017]

我启动了我的 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 }

我退出然后在我的 OSX 终端启动 Node 并尝试连接:

$ node
> var mongoose = require("mongoose");
> mongoose.connect("mongodb://localhost:27017");
mongoose {...}
> MongoError: failed to connect to server [localhost:27017] on first connect ...

我尝试了许多其他网址:

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 接口(interface),这意味着您无法将流量路由到容器。但是,这可以使用端口转发来解决。

我只需要更改 docker run 命令:

docker run -d -p 27017:27017 --name my-mongo mongo

这意味着您公开了 Linux 端口,在本例中为 docker,并将其转发到您的 Mac (-p)。 -d 标志在后台运行进程。

然后 mongoose.connect("mongodb://localhost:27017/test"); 应该可以工作。

关于node.js - 使用获取 MongoError 的 Node 连接到 mongo 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42882517/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com