Docker,mongodb不连接Node.js

时间:2018-10-12 11:52:03

标签: 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'
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'
        }
      ]
    },
  },

问题 enter image description here

我只研究过docker pls帮我

2 个答案:

答案 0 :(得分:0)

在创建新容器时,泊坞窗会将该容器附加到默认内部桥。 https://docs.docker.com/network/检查网络驱动程序。 使它可用于localhost 您将需要设置

network_mode: "host",在docker-compose中的mongo

答案 1 :(得分:0)

indrajeet的答案会起作用,但是由于您正在尝试使用docker-compose,因此最好将每个服务/容器都视为一个主机。就您而言,该错误是因为您的Web应用程序正试图连接到在同一(网络)本地主机上运行的mongo服务。

相反,您应该连接到mongo服务/容器,docker-compose可以方便地使您的Web容器通过主机名“ mongo”(您在docker-compose yaml中指定的服务名称)访问mongo服务/容器/主机)

我的答案是将uri行更改为

uri: `mongodb://mongo:27017/${DB_NAME}`,