【发布时间】:2020-02-03 08:38:31
【问题描述】:
我有安装了 MongoDB 的 Windows 10 机器。我可以从命令行连接它。我使用sam local 运行 NodeJS 应用程序。当我使用生产环境时,该应用程序可以访问 Mongo Atlas 云实例。但是当我切换到具有 localhost MongoDB 的开发环境时,它无法连接。
sam 命令启动 Docker,因此很清楚为什么它无法连接在 windows localhost 上运行的 Mongo。我发现了相关问题:From inside of a Docker container, how do I connect to the localhost of the machine?。问题是我仍然无法连接我的本地 MongoDB,即使我尝试:
"MONGODB_URI": "mongodb://docker.for.win.localhost:27018/bud?retryWrites=true&w=majority"
或
"MONGODB_URI": "mongodb://host.docker.internal:27018/bud?retryWrites=true&w=majority"
错误:
Request failed { MongoNetworkError: failed to connect to server [docker.for.win.localhost:27018] on first connect [MongoNetworkError: connect ECONNREFUSED 192.168.65.2:27018]
有没有人也遇到过这个问题并克服了它? Mongo是直接安装到windows上的,不是在Docker里面的。
【问题讨论】:
-
Docker 实际上运行在 27017 端口
-
我想我应该先问问你使用的是哪个版本的 docker。我在 Windows 10 上使用 docker 19.03.5 Community Edition,我的 docker 容器似乎找到了
localhost。试试:docker run --rm nginx:alpine sh -c "ping localhost"或docker run --rm ubuntu sh -c "apt-get update && apt-get install -yq iputils-ping && ping localhost" -
解决方法: 连接到网络/Wifi,获取 IP 地址并修改您的 docker 以指向该 IP 地址
-
是的,这行得通。但是恕我直言,它使我的实例公开,不是吗?