Я пытаюсь запустить Mongo в Docker, используя Testcontainers в dotnet. У меня нет проблем при использовании следующего кода:
Код: Выделить всё
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
{
"mongosh", "--eval", "rs.initiate()"
}).GetAwaiter().GetResult();
Когда я пытаюсь выполнить какую-либо операцию с mongo в коде dotnet, я получаю ошибку тайм-аута. Когда я запускаю его в режиме отладки и пытаюсь подключиться к созданному докеру с помощью клиента Mongo (я использую DataGrip), я тоже получаю ошибку тайм-аута. Когда я подключаюсь напрямую к консоли контейнера Docker с помощью mongosh, это работает.
Запускаемое изображение Docker:
Настройки подключения в клиенте Mongo:
Когда я использую MongoDbBuilder, как уже говорилось в начале, работает клиент Mongo со строкой подключения.
Подробнее здесь:
https://stackoverflow.com/questions/780 ... ers-in-net