首页 > 解决方案 > MongoDB 身份验证失败,带有容器名称

问题描述

var db = connect("mongodb://admin:14292@mongo-db/admin");

当我使用container name而不是主机和端口时,会引发以下错误

connecting to: mongodb://127.0.0.1:27017/billing_db?compressors=disabled&gssapiServiceName=mongodb
Error: Authentication failed. :

码头工人-compose.yml

version: "3"

services:
  patient-service:
    image: patient-service:1.0
    container_name: patient-service
    ports:
    - 9090:9090
    restart: on-failure
    networks:
      - patient-mongo
    depends_on:
      - mongo-db
    links:
      - mysql-db
  mongo-db:
    image: mongo:latest
    container_name: mongo-db
    ports:
      - 27017:27017
    networks:
      - patient-mongo
    volumes:
     - 'mongodata:/data/db'
     - './init_scripts:/docker-entrypoint-initdb.d' 
    environment:
     - MONGO_INITDB_ROOT_USERNAME=admin
     - MONGO_INITDB_ROOT_PASSWORD=14292
    restart: unless-stopped
    

networks:
  patient-mongo:
  
volumes:
  mongodata:

init_scripts/mongo_init.js

var db = connect("mongodb://admin:14292@mongo-db/admin");

db = db.getSiblingDB('patient_db'); /* 'use' statement doesn't support here to switch db */

db.createUser(
    {
        user: "patient_db",
        pwd: "14292",
        roles: [ { role: "readWrite", db: "patient_db" } ]
    }
);

如果我使用与主机和端口的连接而不是容器名称,那么它可以工作

 var db = connect("mongodb://admin:14292@127.0.0.1:27017/admin");

标签: javamongodbspring-bootdockerdocker-compose

解决方案


推荐阅读