错误:
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将保持不变
在 docker-compose 文件中,每个服务应该有一个网络选项,当它们位于同一网络上时,不会发生此错误
services:
api:
networks:
backend
mongodb:
networks:
backend