。自动化测试,本地和构建服务器上,我试图旋转了一个副本集(我需要oplog)的蒙戈图像自动化测试
复制集设置需要我进入mongo shell并调用“rs.initiate()”。我希望这一切都在代码中完成。
public void SpinUpMongoWithReplicaSet()
{
Process.Start("docker", "run -p 123:27017 --name test_mongo -d mongo:latest mongod --replSet rs0").WaitForExit();
var replicaSetProcess = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "docker",
Arguments = "exec -it test_mongo mongo",
UseShellExecute = false,
RedirectStandardInput = true
}
};
replicaSetProcess.Start();
using(StreamWriter writer = replicaSetProcess.StandardInput)
{
writer.WriteLine("rs.initiate()");
writer.WriteLine("exit");
}
replicaSetProcess.WaitForExit();
}
但是,docker exec命令的问题。
当传递-IT或只是-t,我得到以下错误:
the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
我能找到的唯一的解决办法是只在-i标志传递。无论出于何种原因,这则阻止我连接到蒙戈容器:
MongoDB shell version v3.4.9 connecting to: mongodb://127.0.0.1:27017 2017-10-06T18:25:06.765+0000 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused 2017-10-06T18:25:06.765+0000 E QUERY [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed : [email protected]/mongo/shell/mongo.js:237:13 @(connect):1:6 exception: connect failed
有谁在C#代码中执行的泊坞窗图像的命令的经验吗?
参考:这是一个很好的指导建立与码头工人一蒙戈副本集服务器,而是从命令行。 Docker Replica Set Setup