簡體   English   中英

無法將 MongoDB 與 NestJS 連接 (Docker)

[英]Unable to Connect MongoDB with NestJS ( Docker )

我將我的應用程序和 mongo 數據庫放入 docker 文件中,但是當我運行 docker-compose 時,出現錯誤錯誤 [MongooseModule] 無法連接到數據庫。 我一直在對 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

當您通過 docker-compose 運行服務時,應使用內部 docker-compose 網絡。 每個服務的名稱都是 compose 網絡中的主機,因此您應該使用mongodb://user:password@mongo_db:27017來指定mongo_db服務,而不是使用localhost ,它是容器本身的本地主機試圖連接到

這對我有幫助(基於Jays的回答):

連接字符串(在這種情況下不需要密碼和用戶名) mongo_db

mongodb://mongo_db:27017

完整代碼

@Module({
  imports: [
    MongooseModule.forRoot(url),
    MongooseModule.forFeature([{ name: CatImage.name, schema: CatSchema }]),
  ],
  controllers: [AppController],
  providers: [AppService],
})

docker-compose.development.yml:

mongodb:
    image: mongo
    environment:
      - MONGODB_DATABASE="test"
    ports:
      - 27017:27017
    volumes:
      - mongodb_container:/data/db

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM