MongoDB 在 Docker 上“首次连接时无法连接到服务器 [localhost:27017]”

2024-01-14

我正在使用 mongoDB 和 NodeJS 后端。问题是我收到以下错误

节点:16)UnhandledPromiseRejectionWarning:MongoNetworkError:失败 首次连接时连接到服务器 [localhost:27017] [MongoNetworkError:连接ECONNREFUSED 127.0.0.1:27017]

这是我的 docker-compose

version: '3.4'

services:
  db:
    image: mongo:latest
    ports:
      - '27017:27017'

  rest-api-node:
    build: .
    ports:
      - '5000:5000'
    links:
      - db
    restart: on-failure

我尝试过depends_on也没有工作。

在后端,我使用猫鼬作为与数据库通信的中间件。这是我的一部分index.js

mongoose.Promise = global.Promise
mongoose.connect('mongodb://localhost/demo')
app.listen(port, () => console.log("live"))

我也尝试过使用promise,但没有改变。请帮帮我。 提前致谢

完整的错误日志

在泳池。 (/app/node_modules/mongodb-core/lib/topologies/server.js:505:11) 休息-api-node_1 |在 Pool.emit (events.js:180:13)rest-api-node_1 |在连接处。 (/app/node_modules/mongodb-core/lib/connection/pool.js:329:12) 休息-api-node_1 |在 Object.onceWrapper (events.js:272:13) 休息-api-node_1 |在 Connection.emit (events.js:180:13) 休息-api-node_1 |在套接字。 (/app/node_modules/mongodb-core/lib/connection/connection.js:245:50) 休息-api-node_1 |在 Object.onceWrapper (events.js:272:13) 休息-api-node_1 |在 Socket.emit (events.js:180:13) 休息-api-node_1 |在发出错误NT (内部/streams/destroy.js:64:8)rest-api-node_1 |在 process._tickCallback (内部/process/next_tick.js:178:19) 休息-api-node_1 |名称:'MongoNetworkError',rest-api-node_1 |
消息:'首先无法连接到服务器 [localhost:27017] 连接 [MongoNetworkError: 连接 ECONNREFUSED 127.0.0.1:27017]' }


默认情况下Compose https://docs.docker.com/compose/networking/为您的应用程序设置一个网络。每个 服务的容器加入默认网络并且既是 该网络上的其他容器可以访问,并且可以通过 它们的主机名与容器名称相同。

根据你的docker-compose.yaml您可以访问 mongo 容器的文件127.0.0.1:27017仅来自主机。 为了从 NodeJS 后端容器访问它,您应该使用db:27017.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB 在 Docker 上“首次连接时无法连接到服务器 [localhost:27017]” 的相关文章

  • 无法解析 docker 容器之间的主机名

    我在单独的撰写文件中创建了两个容器 用于应用程序隔离 每个应用程序可能在撰写文件中定义了多个容器 例如后备数据库 这些容器通过名为 common 的外部网络链接 一个示例撰写文件是 version 2 services rabbitmq i
  • 在 config.js 中打开 admin 以查看服务器统计信息

    拉动后运行此命令 docker run d p 27017 27017 e MONGO INITDB ROOT USERNAME admin e MONGO INITDB ROOT PASSWORD password name mongod
  • express.js 示例应用程序[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在启动一个express js 项目 我想查看现有大型应用程序的代码 尤其是它们的文件系统结构 有
  • 如何在 mongodb-native findAndModify 中使用变量作为字段名称?

    在使用 mongodb native 驱动程序的这段代码中 我想增加在单独变量中指定的字段的值 问题在于 在这种情况下 inc 子句中的字段名称将是 变量 而不是变量的内容 在查询部分中 所选变量按预期工作并找到正确的 ID var sel
  • 切换活动链接 Bootstrap 导航栏

    我读过很多关于这个主题的帖子 发现几乎总是相同的解决方案 但它对我不起作用 我的问题如下 我想使用 Twitter Bootstrap 2 3 2 及其导航栏 因此我包含了 css 和 js 文件 在此之前 我还包括 jquery 然后我举
  • 在未安装 docker 的情况下构建 docker 镜像

    是否可以在不安装 docker 的情况下构建镜像 在我的项目的 Maven 构建中 我想生成 docker 映像 但我不想强迫其他人在他们的机器上安装 docker 我可以想到一些安装了 docker 的虚拟框映像 但这是一种繁重的解决方案
  • 导出socket.io时无法读取未定义的属性“socket”

    我正在尝试模块化我的应用程序 并希望在不同的 js 文件上向客户端发出不同的事件 下面的示例代码显示将从 led js 触发事件 onlinestatus 然而我不断收到消息 类型错误 无法读取未定义的属性 套接字 每当我尝试从 led j
  • 没有足够的熵来支持在 boot2docker 中运行的 docker 容器中的 /dev/random

    在虚拟化 Linux 系统中耗尽熵似乎是一个常见问题 例如 dev random 非常慢 https stackoverflow com questions 4819359 dev random extremely slow 让 linux
  • 身份验证在不应该返回“401(未经授权)”时返回

    我第一次设置身份验证功能 在用户登录后得到了一些意外的结果 一位同事给了我一个具有工作身份验证的应用程序 以模仿我的应用程序 看起来我所做的一切都是正确的 我在前端使用 AngularJS 在后端框架使用 SailsJS 并且护照JS ht
  • 如何在arm64主机上运行amd64 docker镜像

    警告 请求的映像平台 linux amd64 与检测到的主机平台 linux arm64 v8 不匹配 并且未请求特定平台 2021 07 28 22 25 06 349222 F tensorflow core platform cpu
  • 使用 --prof 选项创建多个日志文件而不是一个 v8.log 的节点

    我正在尝试使用 prof 选项来分析我的 Node 应用程序 但我发现不是一个单一的 v8 log 文件 而是使用诸如isolate 0x9582b40 v8 log isolate 0xa1cab78 v8 6049 等前缀创建的多个文件
  • 如何使用我自己的自定义身份验证服务使用团队机器人对用户进行身份验证?

    我在 azure 上创建了一个机器人 并在机器人注册通道中注册了它 现在 我想使用我自己托管的自定义身份验证服务 例如 https domainname auth 来使用机器人对用户进行身份验证 我不知道该怎么做 我已阅读 bot 框架文档
  • MongoDB 将数字转换为科学计数法的字符串

    我想获得完整的号码String 但反而 1490650000000 它返回科学计数法 1 49065e 12 这是我尝试转换它的方法 substr myNumber 0 1 有什么想法如何预防吗 Note 我使用的是v3 6 无法升级使用
  • 如何使用缓存快速重建dockerfile?

    我想优化我的 Dockerfile 我希望将缓存文件保留在磁盘中 但是 当我跑步的时候我发现docker build 它总是尝试从网络获取每个文件 我希望在构建期间共享我的缓存目录 例如 var cache yum x86 64 6 但是
  • Docker 多个相同端口问题

    我目前正在解决方案中开发两个相互关联的 ASP NET Core WebAPI 服务 Service1 和 Service2 两者都有 docker 文件并暴露端口 80 Service1是一个独立的服务 需要从Service2调用 我已经
  • 如何通过setTimeout函数定期打印数字?

    var i 0 function counter for i i lt 100 i setTimeout gt console log i 2000 counter 我想以 2 秒的间隔打印 i 但它立即打印 每次打印调用只需要几微秒 为什
  • node.js 模块/导出系统:是否可以将模块导出为函数

    我想在 Dispatch js 中做这样的事情 function handle msg exports handle 这在调用index js中 var dispatch require Dispatch dispatch data 有任何
  • 使用express.js动态加载路线

    我使用express js作为网络服务器 并且想要一种简单的方法来将所有 app get 和 app post 函数分开以分隔文件 例如 如果我想为登录页面指定 get 和 post 函数 我希望在动态加载的路由文件夹中有一个 login
  • 无法连接到docker中的elasticsearch容器

    我正在尝试使用 docker 的官方 elasticsearch 镜像 我遵循了本指南 https www elastic co guide en elasticsearch reference current docker html但是当
  • 无法通过docker连接到ASP.NET Core

    大家好 人们已经关注这个问题太久了 需要一些帮助 我制作了一个 ASP NET Core 网站 没有什么特别的 只是 VS 2017 v 1 1 附带的模板 我使用 dotnet core cli 发布网站并使用此 dockerfile 构

随机推荐