【问题标题】:Docker, mongodb don't connection nodejsDocker,mongodb不连接nodejs
【发布时间】:2018-10-12 22:31:57
【问题描述】:

我在连接与我的 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

码头工人撰写

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,请帮帮我

【问题讨论】:

    标签: node.js mongodb docker


    【解决方案1】:

    在创建新容器时,docker 会将该容器附加到默认的内部网桥。 https://docs.docker.com/network/ 检查网络驱动程序。 使其可用于本地主机 你必须设置

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

    【讨论】:

      【解决方案2】:

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

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

      我的答案是把 uri 行改成

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

      【讨论】:

      猜你喜欢
      • 2021-02-09
      • 2017-10-13
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      相关资源
      最近更新 更多