无法将 MongoDB 与 NestJS ( Docker ) 连接

Posted

技术标签:

【中文标题】无法将 MongoDB 与 NestJS ( Docker ) 连接【英文标题】:Unable to Connect MongoDB with NestJS ( Docker ) 【发布时间】:2022-01-14 18:21:49 【问题描述】:

我将我的应用程序和 mongo db 放入一个 docker 文件中,但是当我运行 docker-compose up 时,我收到错误 ERROR [MongooseModule] Unable to connect to the database。我一直在对 yml 文件进行故障排除,但没有成功。非常感谢任何帮助。

docker-compose.yml

version: '3.6'

services:
  main:
    container_name: main
    build:
      context: .
      target: development
    volumes:
      - .:/usr/src/app
    ports:
      - $SERVER_PORT:$SERVER_PORT
      - 9229:9229
    command: npm run start:debug
    env_file:
      - .env
    networks:
      - webnet
    depends_on:
      - mongo_db

  mongo_db:
    container_name: mongo_db
    hostname: '$MONGO_HOST'
    image: mongo:4.4.11-rc0-focal
    networks:
      - webnet
    environment:
      MONGO_INITDB_ROOT_USERNAME: '$MONGO_USERNAME'
      MONGO_INITDB_ROOT_PASSWORD: '$MONGO_PASSWORD'
      MONGO_INITDB_DATABASE: '$MONGO_DATABASE_NAME'
    expose:
      - '27017'
networks:
  webnet:
    driver: bridge

和 mongo URI:MONGO_URI=mongodb://user:password@localhost:27017

【问题讨论】:

尝试使用mongodb://user:password@mongo_db:27017,当您通过 docker-compose 运行服务时,您应该使用其内部网络 感谢@JayMcDoniel 的成功, 【参考方案1】:

当您通过 docker-compose 运行服务时,应使用内部 docker-compose 网络。每个服务的名称都是 compose 网络中的主机,因此不要使用 localhost(它是容器本身的本地主机),而应使用 mongodb://user:password@mongo_db:27017 指定 mongo_db 服务作为您尝试连接的服务

【讨论】:

以上是关于无法将 MongoDB 与 NestJS ( Docker ) 连接的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 nestjs/mongoose 连接 mongoDB

NestJS TypeORM MongoDB 无法使用 find 或 FindOne 搜索存储库

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

如何使用nestJS将文件上传到mongoose上的mongodb?

NestJS:Mongodb驱动不支持此操作

使用 Nestjs/Angular 初始化 MongoDB 时出错