Docker mongo身份验证失败,URI为



我正在尝试让docker compose使用身份验证连接到mongodb。在过去,我使用了一个包含用户名和密码的URI字符串,但是,当我运行docker up时,它会返回MongoError: Authentication failed.。使用终端,我可以进入docker容器,并使用URI字符串中的凭据手动访问mongo,这意味着数据库正在运行。我是码头工人的新手。有人能解释为什么我的URI字符串不起作用,以及我应该如何修复它吗?

version: "3.8"
services:
product-service:
build:
context: "."
dockerfile: "./product-service/Dockerfile"
container_name: product-service
depends_on:
- product-service-db
ports:
- "7300:7300"
volumes:
- ./product-service:/opt/app
links:
- product-service-db
environment:
- DB_URI=mongodb://root:example@product-service-db:27017/Products
product-service-db:
image: mongo:4.4.2
restart: always
ports:
- "7399:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example

有效的解决方案是将?authSource=admin添加到URI字符串中,我不知道为什么。

DB_URI=mongodb://root:example@product-service-db:27017/Products?authSource=admin

如果有人能够很好地解释为什么这个解决方案有效,请随时更新答案。

最新更新