无法通过 Docker 中的 node.js 连接到 MongoDB [英] Cannot connect to MongoDB via node.js in Docker

查看:23
本文介绍了无法通过 Docker 中的 node.js 连接到 MongoDB的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的 node.js express 应用程序无法连接到 Docker 中的 MongoDB.我对 Docker 不太熟悉.

My node.js express app cannot connect to the MongoDB in a Docker. I'm not that familiar with Docker.

node.js 连接:

node.js connection:

import mongodb from 'mongodb';
...
mongodb.MongoClient.connect('mongodb://localhost:27017', ... );

Dockerfile:

Dockerfile:

FROM node:argon
RUN mkdir /app
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
EXPOSE 3000
CMD ["npm", "start"]

docker-compose.yml

docker-compose.yml

version: "2"
 services:
  web:
   build: .
   volumes:
     — ./:/app
   ports:
   — "3000:3000"
   links:
    — mongo
   mongo:
    image: mongo
    ports:
      — "27017:27017"

构建命令:docker build -t NAME .

运行命令:docker run -ti -p 3000:3000 NAME

连接错误:

[MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017]]
  name: 'MongoError',
  message: 'failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017]'

推荐答案

尝试:

mongodb.MongoClient.connect('mongodb://mongo:27017', ... );

更改您的docker-compose.yml:

version: "2"

services:

  web:
    build: .
    volumes:
      - ./:/app
    ports:
      - "3000:3000"
    links:
      - mongo

  mongo:
    image: mongo
    ports:
      - "27017:27017"

并使用一些 docker compose 命令:

docker-compose down
docker-compose build
docker-compose up -d mongo
docker-compose up web

这篇关于无法通过 Docker 中的 node.js 连接到 MongoDB的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆