NodeJS API 无法在 docker 容器内连接:发生 DNS 错误

问题描述 投票:0回答:1

错误:

auth-service-1     | Error: getaddrinfo ENOTFOUND cluster0.random.mongodb.net
auth-service-1     |     at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:107:26)
auth-service-1     |     at GetAddrInfoReqWrap.callbackTrampoline (node:internal/async_hooks:130:17) {
auth-service-1     |   errno: -3008,
auth-service-1     |   code: 'ENOTFOUND',
auth-service-1     |   syscall: 'getaddrinfo',
auth-service-1     |   hostname: 'cluster0.random.mongodb.net'
auth-service-1     | }
auth-service-1     | 
auth-service-1     | Node.js v18.15.0

Dockerfile

FROM node:18-alpine

ARG SERVICE_PORT=8004
ARG NODE_ENV=dev
ENV NODE_ENV=${NODE_ENV}

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install app dependencies
COPY src/package.json /usr/src/app/
RUN cd /usr/src/app/ && npm install

# Bundle app source
COPY src /usr/src/app

EXPOSE ${SERVICE_PORT}

CMD ["sh", "-c", "npm run start:${NODE_ENV}"]

本地 API 能够连接到 mongoDB 集群,但在 docker 容器内无法连接,会引发 DNS 错误。

在mongoDB集群上,我已经

Allow Access From Anywhere
,如果它在没有docker的情况下在我的本地机器上工作,那么它也应该与docker一起工作,因为ip将保持不变

node.js docker deployment dns
1个回答
0
投票

在 docker-compose 文件中,每个服务应该有一个网络选项,当它们位于同一网络上时,不会发生此错误

services:
 api:
  networks:
   backend
 mongodb:
  networks:
   backend
© www.soinside.com 2019 - 2024. All rights reserved.