Docker 运行 MongoDB 副本集..,它是如何工作的?

Docker Run MongoDB replica set.., how is it working?

所以我正在创建一些大量使用 mongo 事务的软件。 到目前为止,我只尝试了 testcontainers mongo 和纯单元测试。 现在我开始手动测试它,但我收到类似以下内容的错误:Transaction numbers are only allowed on a replica set ...,但在单元测试期间不会发生该错误。

我了解到发生此错误是因为事务只能在副本集上进行,但是,测试容器是如何工作的?我在 运行 次测试期间检查了 docker ps,只有一个 mongo docker 容器启动了。

我检查了 testcontainers 传递的参数,结果它们传递了 --replSet docker-rs。所以我做了,但后来我得到这个错误:NotYetInitialized: Cannot use non-local read concern until replica set is finished initializing.

我抓耳挠腮,想知道 testcontainers 运行 一个 mongo docker 容器如何表现得像一个副本集。

假设您正在使用 Tescontainers MongoDB module, the missing part in your manual setup is most probably the mongo replica set initiation

这在 testcontainers 模块文档中提到为:

Initialize a single replica set via executing a proper command

也可以随意查看模块源代码本身以深入了解实现细节。例如,initReplicaSet() part.