我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运行图:

enter image description here

Mongo客户端中的连接设置:

enter image description here

当我使用MongoDbBuilder时,正如前面提到的那样,带有连接字符串的Mongo客户端可以工作.

推荐答案

mongod人调到指挥部对我很管用:

var container = new ContainerBuilder()
        .WithImage("mongo:6.0")
        .WithCommand("mongod", "--replSet", "rs0")
        .WithPortBinding("27017")
        .Build();

不要忘记切换到"No auth",因为默认的docker镜像设置不需要auth(不像MongoDbBuilder创建的镜像):

默认情况下,Mongo的配置不需要身份验证即可访问,即使是管理用户也是如此.

enter image description here

enter image description here

Csharp相关问答推荐

C# uwp中的Win11启动屏幕剪辑工作方式不同

更改对象的旋转方向

向类注入一个工厂来创建一些资源是一个好的实践吗?

为什么这个Reflection. Emit代码会导致一个DDL ViolationException?

程序集.加载从exe的异常

使用客户端密钥为Fabric Rest API生成令牌

NumPy s fftn in C#with pythonnet'

在发布表单时绑定包含附加(嵌套)列表的对象列表的正确语法是什么

使用命令初始化可绑定属性

WPF DataGrid中的三维数据

查找表中的模式

如何使用EF Core和.NET 8来upsert到具有多对多关系的表?

如何通过寻找向量长度来优化两个循环?

在IAsyncEnumerable上先调用,然后跳过(1)可以吗?

如何将DotNet Watch与发布配置和传递给应用程序的参数一起使用?

EFR32BG22 BLE在SPP模式下与PC(Windows 10)不连接

JsonPath在Newtonsoft.Json';S实现中的赋值

将字符串类型日期输入(yyyy-mm-ddthh:mm:ss)转换为MM/dd/yyyy格式

带有类约束的C#泛型

ASP.NET重新加载Kestrel SSL证书