问题:
我已经用dockercompose创建了一个mongo-Db复制集。
questionsdb:
image: mongo:latest
container_name: questionsdb
hostname: questionsdb
restart: always
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=mi1234
volumes:
- mongo_data:/data/dbadmin
ports:
- 27017:27017
- 9229:9229
entrypoint: [ "/usr/bin/mongod", "--replSet", "rsmongo", "--bind_ip_all"]
#networks:
# - custom-
questionsdb1:
image: mongo:latest
container_name: questionsdb1
hostname: questionsdb1
restart: always
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=mi1234
volumes:
- mongo_data1:/data/dbadmin
ports:
- 27018:27017
- 9230:9229
entrypoint: [ "/usr/bin/mongod", "--replSet", "rsmongo", "--bind_ip_all"]
#networks:
# - custom-network
questionsdb2:
image: mongo:latest
container_name: questionsdb2
hostname: questionsdb2
restart: always
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=mi1234
volumes:
- mongo_data2:/data/dbadmin
expose:
- "27017"
ports:
- 27019:27017
- 9231:9229
entrypoint: [ "/usr/bin/mongod", "--replSet", "rsmongo", "--bind_ip_all"]
#networks:
# - custom-network
我的mongo express容器配置是这样的。
mongo-express:
image: mongo-express
container_name: mongo-express
restart: always
ports:
- 8111:8081
environment:
- ME_CONFIG_MONGODB_SERVER=questionsdb
- ME_CONFIG_MONGODB_ADMINUSERNAME=admin
- ME_CONFIG_MONGODB_ADMINPASSWORD=mi1234
- ME_CONFIG_BASICAUTH_USERNAME=admin@mi.com
- ME_CONFIG_BASICAUTH_PASSWORD=mi@1234
#networks:
# - custom-network
我试着像这样通过mongo指南针连接到它。
mongodb://admin:mi1234@localhost:27017,localhost:27018,localhost:27019/admin?replicaSet=rsmongo
但是mongo express和mongo compass都失败了,给我的身份验证失败了。
这是我在docker容器中看到的错误。
{"t":{"$date":"2021-08-16T01:57:15.391+00:00"},"s":"I", "c":"ACCESS", "id":20249, "ctx":"conn219","msg":"Authentication failed","attr":{"mechanism":"SCRAM-SHA-1","speculative":false,"principalName":"admin","authenticationDatabase":"admin","remote":"172.18.0.15:59638","extraInfo":{},"error":"UserNotFound: Could not find user "admin" for db "admin""}}
有人能帮我解决这个问题吗。我试了很多办法来找到解决这个问题的办法,但我没能做到。谢谢
根据错误消息,在容器启动期间,没有在数据库中创建管理员用户。
这可以通过覆盖官方入口点的自定义入口点[ "/usr/bin/mongod", "--replSet", "rsmongo", "--bind_ip_all"]
来解释。而root用户的创建工作似乎是通过这个脚本实现的。
尝试只使用一个mongo实例执行docker-compose堆栈,而不使用entrypoint语句。