Dockerizing NestJS APP 和 MongoDB “首次连接时无法连接到服务器 [localhost:27017]”

Posted

技术标签:

【中文标题】Dockerizing NestJS APP 和 MongoDB “首次连接时无法连接到服务器 [localhost:27017]”【英文标题】:Dockerizing NestJS APP and MongoDB "failed to connect to server [localhost:27017] on first connect" 【发布时间】:2020-02-14 12:55:02 【问题描述】:

我想dockerize我的nestJS APP和MongoDB,但我收到这个错误:第一次连接时无法连接到服务器[localhost:27017]

码头文件

FROM node:10
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "run", "start:prod"]

docker-compose.yml:

version: '3'
services:
  app:
    container_name: erpcore
    restart: always
    build: .
    ports:
      - '3000:3000'
    links:
      - erpdb
  erpdb:
    container_name: erpdb
    image: mongo

数据库.providers.ts

import * as mongoose from 'mongoose';

export const databaseProviders = [
    
        provide: 'DATABASE_CONNECTION',
        useFactory: async (): Promise<typeof mongoose> =>
            await mongoose.connect('mongodb://erpdb:27017/erp'),
    ,
];

谢谢

【问题讨论】:

你 docker-compose 只是在旋转一个图像。您是否已经在 mongo 中创建了 erp db。 通常nestJS应用程序会自动创建erp db @SamirAFALLAH,确保你的 nestJs 应用程序和 MongoDB 在你的 docker-compose 文件中配置为在同一个网络中 【参考方案1】:

也许您的应用在 MongoDB 之前启动。尝试在您的应用服务上添加depends_on: erpdb

【讨论】:

是添加,但不起作用 *** 版本:'3' 服务:erpdb:容器名称:erpdb 图像:mongo app:容器名称:erpcore 重启:始终构建:。端口:-'3000:3000'depends_on:-erpdb *** MongooseModule 添加了重试选项来处理这种情况。看来您没有使用 MongooseModule,但您可以查看源代码以了解它是如何实现的:https://github.com/nestjs/mongoose/blob/master/lib/mongoose-core.module.ts

以上是关于Dockerizing NestJS APP 和 MongoDB “首次连接时无法连接到服务器 [localhost:27017]”的主要内容,如果未能解决你的问题,请参考以下文章

Dockerizing React App:应用程序在容器内启动,但无法从暴露的端口访问

dockerizing Spring Boot 应用程序错误:错误:无效或损坏的 jarfile /app.jar

Dockerizing 一个 NodeJS 应用程序:package.json 在本地可以正常工作,但不能在容器内工作

Nestjs 错误:找不到模块“./app.controller”

如何在nestjs中设置morgan-body

为 Gitlab CI Dockerizing Nodejs 依赖项