通过 springboot 应用程序连接到 docker-compose mongodb 时身份验证失败

问题描述 投票:0回答:1

docker-compose.yml

version: '4'
services:
  mongodb:
    image: mongo:7.0.5
    container_name: mongodb
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: password
      MONGO_INITDB_DATABASE: product-service
    volumes:
      - ./data:/data/db

应用程序属性

spring.application.name=product-service
spring.data.mongodb.uri=mongodb://root:password@localhost:27017/product-service?authSource=admin

当我调试代码时,我得到了预期的结果,但无法连接到 docker mongodb。 当我尝试执行该应用程序时,我得到了

com.mongodb.MongoCommandException: Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' on server localhost:27017. The full response is {"ok": 0.0, "errmsg": "Authentication failed.", "code": 18, "codeName": "AuthenticationFailed"}
mongodb spring-boot docker docker-compose dockerfile
1个回答
0
投票

要解决身份验证问题,您需要设置 MongoDB 初始化脚本来创建具有必要角色的用户。

文件看起来像这样:

db.createUser(
        {
            user: "root",
            pwd: "password",
            roles: [
                {
                    role: "readWrite",
                    db: "product-service"
                }
            ]
        }
);

然后您需要修改您的

docker-compose.yml
文件以将脚本挂载到 MongoDB 容器中。 您应该看看这里:如何在启动时为 MongoDB 容器创建数据库?

© www.soinside.com 2019 - 2024. All rights reserved.