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 初始化脚本来创建具有必要角色的用户。
文件看起来像这样:
db.createUser(
{
user: "root",
pwd: "password",
roles: [
{
role: "readWrite",
db: "product-service"
}
]
}
);
然后您需要修改您的
docker-compose.yml
文件以将脚本挂载到 MongoDB 容器中。
您应该看看这里:如何在启动时为 MongoDB 容器创建数据库?