[英]Docker Compose getting error ECONNREFUSED 127.0.0.1:3306 with MySQL and NodeJS
[英]Docker compose getting error ECONNREFUSED 127.0.0.1:27018 with MongoDB and NodeJs
我正在嘗試通過在 Windows 11 主機中使用 Docker Compose 為我的 NestJS + TypeORM + MongoDB 環境設置一些容器,但我收到 ECONNREFUSED 錯誤:
nestjs-docker-api-1 | [Nest] 1 - 07/23/2022, 8:45:32 AM ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)...
nestjs-docker-api-1 | MongoServerSelectionError: connect ECONNREFUSED 127.0.0.1:27018
nestjs-docker-api-1 | at Timeout._onTimeout (/usr/src/app/node_modules/mongodb/lib/sdam/topology.js:293:38)
nestjs-docker-api-1 | at listOnTimeout (internal/timers.js:554:17)
nestjs-docker-api-1 | at processTimers (internal/timers.js:497:7)
我創建了以下Dockerfile
來配置 NestJS API 容器:
FROM node:12
# Create app directory
WORKDIR /usr/src/app
# A wildcard is used to ensure both package.json AND package-lock.json are copied
COPY package*.json ./
# Install app dependencies
RUN npm install
# Bundle app source
COPY . .
EXPOSE 8080
# Creates a "dist" folder with the production build
RUN npm run build
# Start the server using the production build
CMD [ "node", "dist/main.js" ]
然后我使用以下docker-compose.yml
從 Docker Compose 引用它:
version: "3.9"
services:
mongo:
image: mongo
ports:
- "27018:27017"
restart: always
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_ADMINPASSWORD: example
api:
image: image_name
build: .
depends_on:
- mongo
environment:
NODE_ENV: development
PORT: 3000
USERNAME : root,
PASSWORD : example
ports:
- "8000:3000"
最后,我將 TypeORM 配置設置為與 Docker Compose 文件匹配:
@Module({
imports: [ TypeOrmModule.forRoot({
type: 'mongodb',
host: 'localhost',
port: 27018,
database: 'admin',
entities: [],
synchronize: true,
})],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
我嘗試了很多,但代碼不起作用。有幫助嗎?
來自文檔:
默認情況下,Compose 會為您的應用程序設置一個網絡。
您必須使用這里的服務名稱mongo
通過 compose 而不是localhost
創建的網絡連接到它。
或者,如果您想直接連接到localhsot
,您可以將network_mode: "host"
添加到您的 docker-compose 文件中。
更多關於network_mode在這里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.