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

使用docker compose时mongoose连接失败

方飞翼
2023-03-14

我有一个使用Mongo数据库的Node express服务器。

我正在尝试使用docker-compose为它们中的每一个创建一个容器。

这是我的docker作文。yml文件:

version: "2"
 services:
  server:
    container_name: server
    restart: always
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    container_name: db
    image: mongo
    volumes:
      - /var/lib/mongodb:/data/db
    ports:
      - "27017:27017"

和我的Dockerfile:

FROM node:latest
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm install
COPY . /usr/src/app
RUN npm run build-run
EXPOSE 3000

我在许多教程中看到,当使用Docker创建Mongo容器时,应该在mongoose中更新连接字符串。连接以使用Docker容器命名解析。

所以我根据我的docker-compose文件更改了我的连接字符串:

private readonly CONNECTION_STRING: String = 'mongodb://db/search-people-db'

public connect(): void {
    mongoose.connect(this.CONNECTION_STRING)

    this._db.on('error', (err) => {
        console.log(`mongoose server failed to start: ${err}`)
    })

    this._db.once('open', () => {
        console.log(`mongoose server running using ${this.CONNECTION_STRING}`)
    })
}'

但是,在运行sudo docker-compose up时,我一直收到以下错误:

Mongoose服务器启动失败:MongoNetworkError:第一次连接时未能连接到服务器[db: 27017][MongoNetworkError: getaddrinfo ENOTFOUND db db: 27017]

我做错什么了?先谢谢你


共有2个答案

云建木
2023-03-14

depends_on替换为docker-compose.yml中的链接并尝试再次运行命令。

海宁
2023-03-14

MongoDB的容器启动了,但MongoDB本身需要更多的时间启动。因此,应用程序在完全启动之前不会连接到它。

正如Docker的文档所建议的,您应该为应用程序设置等待时间,然后运行代码。我建议让mongoose在第一次无法连接时尝试重新连接,或者让应用程序在无法连接时崩溃。Docker将再次运行您的容器。

 类似资料:
  • 本文向大家介绍Node.js 使用Mongoose连接到MongoDB,包括了Node.js 使用Mongoose连接到MongoDB的使用技巧和注意事项,需要的朋友参考一下 示例 首先,使用以下命令安装Mongoose: 然后,将其添加server.js为依赖项: 接下来,创建数据库模式和集合名称: 创建一个模型并连接到数据库: 接下来,启动MongoDB并server.js使用运行node s

  • 我正在使用套接字。io,应用程序由AWS提供。我收到一个浏览器控制台错误: websocket.js:54 WebSocket 连接到 'wss://www.tidee.com/socket.io/?EIO=4 客户代码: 服务器代码: 在 AWS 中,安全组接受端口 443,负载均衡器侦听端口 443。 应用程序在本地运行时工作(状态 101),并使用 协议。

  • 我试图连接到我的mongo数据库在我的远程服务器: 但我有一个错误: MongoDB外壳版本:2.6.10连接到:xxx。xxx。xxx。xx:27017/测试2016-11-07T05:18:39.140 0000警告:无法连接到xxx。xxx。xxx。xx:27017,原因:错误号:111连接被拒绝2016-11-07T05:18:39.142 0000错误:无法连接到服务器xxx。xxx。x

  • 问题内容: 目前,我的连接 mongoose.js 具有以下代码: 需要连接的文件是 test.js : 如何更新mongoose.js以使用mongoose.createConnection(…)函数使用多个连接? 当我进行如下更改时,我仅从一个连接的更改开始: 我得到“未定义不是函数”。如果我使用此代码: 我收到“错误:尝试打开未关闭的连接” 有什么建议吗? 问题答案: mongoose通过

  • 机器假死 Linux假死,可理解为能ping通,但是登陆不了,也有是系统panic导致 查看sockstat状态 $ cat /proc/net/sockstat sockets: used 863 TCP: inuse 537 orphan 1 tw 872 alloc 712 mem 358 UDP: inuse 4 mem 1 UDPLITE: inuse 0 RAW: inuse 0 FR

  • 我正在着手建立一个非常简单的全堆栈web应用程序,可以处理用户注册和登录。为此,我使用作为本地数据库来存储用户注册后的信息。这是工作了很长一段时间,但我最近运行了我的应用程序,在一个星期后,它发生了这样的事情: 作为参考,这是我的文件的一个非常精简的版本: 这是我的: 非常简单,而且,一周前工作得很好。有人知道这是怎么回事吗?谢谢你的回答!