如何连接到使用Docker从mongoexpress和mongoCompass创建的mongoDb副本



问题:

我已经用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语句。

最新更新