将MongoDB容器与Node.js应用程序连接

时间:2018-08-22 15:05:21

标签: node.js mongodb docker docker-compose

我有两个docker容器,一个带我的nodejs webapp,一个带mongo db。 我在mongo db容器中建立了身份验证,现在收到以下错误消息:

    mongo    | 2018-08-22T13:48:24.102+0000 I ACCESS   [conn1] SASL SCRAM-SHA-1 authentication failed for blub on admin from client XXXXX; UserNotFound: Could not find user blub@admin
    mongo    | 2018-08-22T13:48:24.105+0000 I NETWORK  [conn1] end connection XXXXX (0 connections now open)
 app      | (node:16) UnhandledPromiseRejectionWarning: MongoError: Authentication failed.

我使用此docker-compose.yml构建两个容器

version: "2"
services:
 app:
   container_name: app
   restart: always
   build: .
   ports:
     - "3000:3000"
   links:
     - mongo
 mongo:
   container_name: mongo
   image: mongo
   volumes:
     - ./data:/data/db
   ports:
     - "27017:27017"
   environment:

     - MONGODB_INITDB_ROOT_USERNAME=blub
     - MONGODB_INITDB_ROOT_PASSWORD=pass

我的应用程序通过以下方式与mongodb连接:

mongoose.connect("mongodb://blub:pass@mongo:27017/");

1 个答案:

答案 0 :(得分:0)

我找到了解决方案: 我的docker-compose:

version: '2'
services:
 app:
   container_name: app
   restart: always
   build: .
   ports:
     - 3000:3000
   links:
     - mongodb
 mongodb:
   container_name: mongodb
   image: mongo:3.4
   ports:
     - 27017:27017
   volumes:
      - ./data:/data/db
   environment:
     - MONGO_INITDB_ROOT_USERNAME=admin
     - MONGO_INITDB_ROOT_PASSWORD=admin123456
   command: mongod

nodejs应用中的连接:mongoose.connect("mongodb://admin:admin123456@mongodb:27017/");

但是我实际上不知道为什么它不能在我的第一次尝试中起作用。

相关问题