Jes*_* V. 3 mongoose mongodb docker docker-compose nestjs
我正在尝试使用 docker-compose 启动一个react-nestjs-mongo db应用程序,但由于某种原因它似乎不起作用。docker-compose --build输出显示如下:
服务器 | [Nest] 32 - 06/06/2021, 3:10:25 AM [MongooseModule] 无法连接到数据库。重试 (7)... +33006ms
数据库| {“t”:{“$date”:“2021-06-06T03:10:27.406+00:00”},“s”:“I”,“c”:“存储”,“id”:22430,
"ctx":"WTCheckpointThread","msg":"WiredTiger message","attr":{"message":"[1622949027:406819][1:0x7f9ae2c3b700], WT_SESSION.checkpoint: [WT_VERB_CHECKPOINT_PROGRESS] 保存检查点快照分钟: 7、快照最大值:7 快照计数:0、最早的时间戳:(0, 0) 、元检查点时间戳:(0, 0)"}}
这是我的 docker-compose:
version: "3.5"
services: client:
container_name: client
build: ./client
ports:
- 3000:3000
depends_on:
- server
server:
container_name: server
build: ./server
ports:
- 8000:8000
depends_on:
- mongodb
links:
- mongodb
mongodb:
container_name: database
image: mongo
restart: always
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
Run Code Online (Sandbox Code Playgroud)
我的 app.modules.ts 文件如下所示:
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { MongooseModule } from '@nestjs/mongoose';
@Module({
imports: [
MongooseModule.forRoot('mongodb://localhost:27017/nestjs', {
useNewUrlParser: true,
}),
],
controllers: [AppController],
providers: [AppService],
})
class AppModule {}
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下为什么这不起作用吗?
小智 9
您正在使用 docker-compose 。因此,您没有连接“localhost”,但它应该是您在 docker-compose 文件中定义的“服务”的地址。
您应该使用而不是 'mongodb://localhost:27017/nestjs' (在您的情况下,您在 docker-compose 中定义的服务名称是 mongodb 。您应该使用 'mongodb://mongodb:27017/nestjs'
| 归档时间: |
|
| 查看次数: |
4938 次 |
| 最近记录: |