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. :
docker-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");