我try 在Docker中运行Mongo,在dotnet中使用Testcontainers.当我使用以下代码时,我没有任何问题:
Container = new MongoDbBuilder()
.WithPortBinding("27017")
.Build();
但是使用这个默认的MongoDbBuilder,我不能将其作为副本集运行.我发现我必须以容器构建器的身份运行它,并自定义镜像:
Container = new ContainerBuilder()
.WithImage("mongo:6.0")
.WithEntrypoint("mongod")
.WithCommand("--replSet", "rs0")
.WithPortBinding("27017")
.Build();
然后,我将副本集初始化为:
var result = Container.ExecAsync(new List<string>
{
"mongosh", "--eval", "rs.initiate()"
}).GetAwaiter().GetResult();
当我try 在DotNet代码中使用mongo执行任何操作时,我收到超时错误.当我在调试模式下运行它,并try 连接到Mongo客户端创建的docker(我使用DataGlip)时,我也收到超时错误.当我以mongosh%的速度直接连接到 docker 集装箱控制台时,它可以工作.
Docker运行图:
Mongo客户端中的连接设置:
当我使用MongoDbBuilder时,正如前面提到的那样,带有连接字符串的Mongo客户端可以工作.