[英]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.