如何使用官方 mongo Docker 镜像将 MongoDB 作为单节点副本集运行?

Gol*_*den 5 mongodb node.js docker replicaset

基本上,标题已经说明了一切:我想使用官方 mongo Docker 映像将 MongoDB 作为单节点副本集运行,但我不知道如何执行此操作。

首先,我使用附加--replSet "rs0"参数启动了 Docker 映像。在目录内部/docker-entrypoint-initdb.d/我添加了一个启动脚本,该脚本运行:

rs.initiate();
Run Code Online (Sandbox Code Playgroud)

但是,无论我是否提供选项,MongoDB 都会启动(并且似乎启动成功),但我注意到能够使用 Node.js MongoDB 驱动程序连接到它。如果我将useUnifiedTopology标志设置为true,则不会发生任何事情(连接只是挂起),如果我将其设置为false,则会收到错误消息,告诉我连接在 30 秒后超时。

我从根本上做错了什么吗?是否可以使用 Docker 镜像将 MongoDB 作为副本集运行?有人可以给我一些指导吗?

更新1

当我如上所述运行数据库时,然后运行以下命令:

$ docker exec -it test-mongo bash
Run Code Online (Sandbox Code Playgroud)

然后在容器内运行:

$ mongo
Run Code Online (Sandbox Code Playgroud)

我连接到数据库。然后我运行以下命令:

var database = db.getSiblingDB('test-db');
database.auth('user', 'password');
database.getCollectionNames();
Run Code Online (Sandbox Code Playgroud)

前两个成功,没有任何问题,第三个告诉我,listCollections由于未捕获的异常和错误消息而失败not master and slaveOk=false

这听起来好像单个数据库服务器不是它自己的主服务器,是吗?