无法将 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]”