当前位置: 首页 > 知识库问答 >
问题:

MongoDB on with Docker"第一次连接时未能连接到服务器[localhost:27017]"

蒋永宁
2023-03-14

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

Node: 16)UnHandledPromiseRejessWarning: MongoNetworkError:首次连接时连接到服务器[localhost:27017]失败[MongoNetworkError:连接ECONNREFUSED127.0.0.1:27017]

这是我的码头作曲

version: '3.4'

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

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

我也尝试过使用dependens\u on,但不起作用。

在后端,我将mongoose作为与DB通信的中间件。这是我的索引的一部分。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)池中的rest-api-node_1。在连接处发出(events.js:180:13)rest-api-node|1。(/app/node_modules/mongodb core/lib/connection/pool.js:329:12)rest-api-node_1|at对象。onceWrapper(events.js:272:13)rest-api-node|1|at Connection。在套接字上发出(events.js:180:13)rest-api-node_1。(/app/node_modules/mongodb core/lib/connection/connection.js:245:50)rest-api-node_1|at对象。套接字上的onceWrapper(events.js:272:13)rest-api-node|1。emit(events.js:180:13)rest-api-node|1|at emitErrorNT(internal/streams/destroy.js:64:8)rest-api-node|1|at process_tickCallback(internal/process/next_tick.js:178:19)rest-api-node|1|name:'MongoNetworkError',rest-api-node|1|
消息:“未能在第一次连接时连接到服务器[localhost:27017]。[MongoNetworkError:connect econnrefuse127.0.0.1:27017]”

共有3个答案

仇阳州
2023-03-14

我也被困在这几个小时了!在连接字符串中设置db:27017,在restapi节点上设置restart:always,确保您连接到正确的IP,并确保节点服务器继续尝试连接到您的db。这对我有用!

霍书
2023-03-14

我有同样的问题其他解决方案不适合我但我这样做

对于mongo URI,您必须使用您的MongoDB服务名称,而不是127.0.0.1localhost

例如,在下面的docker-comment文件中,我的mongo服务名称是mongob-myapp,我将URI更改为mongob-myapp: 27017/myapp,它适用于我


services:
  boilerplate-api-app:
    build: .
    environment:
      - MONGO_URI=mongodb://mongodb-myapp:27017/myapp
    volumes:
      - .:/app
    ports:
      - "5000:5000"
    depends_on:
      - mongodb-myapp

 mongodb-myapp:
    image: mongo
    ports:
      - "27017:27017"
金阳曜
2023-03-14

默认情况下,Compose为应用程序设置单个网络。服务的每个容器都加入默认网络,并且该网络上的其他容器都可以访问该容器,并且可以通过与容器名称相同的主机名发现该容器。

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

 类似资料:
  • 在日志屏幕中,我得到一个错误:

  • 问题内容: 我是nodeJS的新手,通过关注youtube上的预告片开始学习,直到我添加了connect函数(如果mongodb, 当我在cmd(节点启动应用)上运行代码时,出现以下错误, 有人可以解释一下我错过了哪一步吗?我的代码: 问题答案: 您必须先在系统中安装数据库服务器并启动它。 使用以下链接进行安装 https://docs.mongodb.com/manual/installatio

  • 我在运行使用Netty的服务时遇到了问题。它启动和工作正常,但只有一次。在此之后,不接受任何连接(它们将立即被删除)。 当我第一次使用(示例端口,随便什么)连接到服务器时,一切正常: 客户端会话: 服务器日志: --编辑2-- 只要连接处于活动状态,服务器就可以正常工作--在关闭连接之前,我可以轻松地交换请求/响应。 不要被IP地址迷惑,这是一个转发到Docker的本地端口,应用程序就是在那里启动

  • 我试图使用java包装器将RunDeck server作为windows服务运行,本文将指导您:http://www.phwitservices.com/2014/06/rundeck-windows-service

  • 我们在谷歌云平台上一直面临着一个相当奇怪的问题。我们试图在google cloud上设置一个Hbase独立实例,并使用静态IP地址,然后通过Java API远程连接到该实例。 如果代码被编入Jar并部署在HBase服务器上,则运行良好,但是从本地机器上运行,尽管它打开了所有端口并完全访问,但拒绝通过Zookeeper进行连接。 搜了无数论坛,都没能成功。 已经更改了etc/hosts文件,在hba

  • 我正在尝试使用 javamail 连接到本地后缀鸽子服务器。我已经使用 Thunderbird 成功连接到服务器,所以我知道我的用户名和密码是正确的,但我总是得到 我所知道的唯一一件事就是改变java。禁用一些不太安全的协议。dovecot需要什么协议?还是我看错了方向。 如果这是一个协议问题,是否有任何方法可以将参数传递给编译器?我确实有其他服务,我想阻止支持禁用的协议 编辑: 这是我使用的代码