Node.js Docker,mongodb不连接节点

Node.js Docker,mongodb不连接节点,node.js,mongodb,docker,Node.js,Mongodb,Docker,当连接运行在与nodejs容器分离的容器中的MongoDB时,我遇到了一个奇怪的问题,在尝试连接到MongoDB时,它显示以下错误。 我的Dockerfile FROM node:latest WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . EXPOSE 8000 CMD ["npm","start"] enter code here docker compose version: '3

当连接运行在与nodejs容器分离的容器中的MongoDB时,我遇到了一个奇怪的问题,在尝试连接到MongoDB时,它显示以下错误。 我的Dockerfile

    FROM node:latest

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 8000

CMD ["npm","start"]
enter code here
docker compose

version: '3'
services:
  web:
    build: .
    ports:
     - "8000:8000"
    links:
    - mongo
    - redis

  mongo:
    image: mongo
    ports:
      - "49155:49155"
  redis:
    image: "redis:alpine"
mongo配置

mongoose: { // MongoDB
    // uri: mongodb://username:password@host:port/database?options
    uri: `mongodb://localhost:27017/${DB_NAME}`,
    options: {
    },
    seed: {
      path: '/api/models/seeds/',
      list: [
        {
          file: 'user.seed',
          schema: 'User',
          plant: 'once' //  once - always - never
        },
        {
          file: 'example.seed',
          schema: 'Example',
          plant: 'once'
        }
      ]
    },
  },
发行


我只是一个学习过的docker,请帮助我创建一个新的容器,docker会将该容器附加到默认的内部桥接器上。 检查网络驱动程序。 使其可用于本地主机 你得准备好


网络模式:主机,在docker compose in mongo部分

indrajeet的答案将起作用,但由于您正在尝试docker compose,因此最好将您的每个服务/容器视为主机。在您的情况下,错误是因为您的web应用程序正在尝试连接到在同一web localhost上运行的mongo服务

相反,您应该连接到mongo服务/contaner,docker compose可以方便地让您的web容器通过主机名mongo(docker compose yaml中指定的服务名称)访问mongo服务/container/host

我的答案是将uri行更改为

这就是我现在得到的
uri: `mongodb://mongo:27017/${DB_NAME}`,