我试图使用docker- SpringBoot来使用SpringBoot,但我似乎无法使用在docker-compose.yaml和application.properties中设置的用户名和密码连接到数据库。
下面是docker-compose.yaml。
version: "3.8"
services:
mongodb:
image: mongo
container_name: mongodb
ports:
- 27017:27017
volumes:
- ./001_users.js:/docker-entrypoint-initdb.d/001_users.js:ro
- data:/data
environment:
- MONGO_INITDB_ROOT_USERNAME=rootuser
- MONGO_INITDB_ROOT_PASSWORD=rootpass
mongo-express:
image: mongo-express
container_name: mongo-express
restart: always
ports:
- 8081:8081
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME=rootuser
- ME_CONFIG_MONGODB_ADMINPASSWORD=rootpass
- ME_CONFIG_MONGODB_SERVER=mongodb
volumes:
data: {}
networks:
default:
name: mongodb_networkapplication.properties
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=rootuser
spring.data.mongodb.password=rootpass
spring.data.mongodb.database=foober
spring.data.mongodb.port=27017
spring.data.mongodb.host=localhost
spring.data.mongodb.auto-index-creation=true我尝试在下面的代码中添加docker文件(001_users.js),但它没有解决问题。
db.createUser(
{
user: "rootuser",
pwd: "rootpass",
roles:[
{
role: "readWrite",
db: "foober"
}
]
}
);另外,mongodb日志显示,管理员数据库中找不到rootuser,但是当我转到mongo表达式时,用户就出现在管理数据库中。
发布于 2022-12-01 21:51:48
如果您正在将spring引导服务作为撰写堆栈的一部分运行,那么将spring.data.mongodb.host更改为mongodb。当引用来自另一个服务的服务时,主机名是服务名称。请注意,您没有在撰写文件中包含使用spring数据的服务,所以我不知道这是否是您要做的。
或者,你是在码头外经营这个吗?您还应该查看data的卷映射。也许您应该为卷提供一个真正的目录,并指出它在您的撰写文件中是外部的。
你看过mongodb的日志了吗?它是否显示正在进行登录尝试?你也不需要用你正在做的事情来建立一个网络,这样你就可以删除这个部分。你能用你站起来的快递容器访问mongodb吗?
无论您尝试什么,都要确保每次在重新运行之前,如果数据目录没有工作,就完全删除数据目录中的所有文件。您应该删除入口点用户创建文件,因为环境变量就足够了。
发布于 2022-12-01 22:17:01
原来端口27017是由另一个进程获取的,该进程导致身份验证失败.我把港口改成了免费的,现在它开始工作了。
https://stackoverflow.com/questions/74648391
复制相似问题