java - 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");
解决方案
推荐阅读
- algorithm - 这段代码的时间复杂度是多少?
- java - 休眠分页未按预期工作
- html - 是否可以用六个 iframe 制作一个立方体?
- javascript - 如何手动制作firebase动态链接?
- python - 我正在制作一个 Whack a Mole 游戏,当用户单击鼹鼠图像时,他会得到一个点。我无法弄清楚如何做到这一点
- android - Class not found. Test class not found
- sqlite - 不能通过另一个 QML 访问属性别名
- python-3.x - 特征向量中心性numpy的不同结果
- exe - .exe 开始时 .exe 文件后 .exe 文件后 DOS 是否填充内存?
- beautifulsoup - Beautifulsoup 无法提取 src 标签