我需要做的:创建一个MongoDB 3种方式的副本集,并使用bash脚本使其自动化。当我手动执行此操作时,效果很好,但我的脚本却无法显示。
脚本本身:
public static Expression<Func<UserEx, UserExDTO>> GetUserExDtOCompbinedExpression()
{
//Translate() and To() methods do all the job
return GetUserDTOConversionExpression().Translate()
.To(userEx => userEx.User, userExDTO => userExDTO.UserModel, GetUserExDTOConversionExpression());
}
由此我得到以下输出:
MongoDB服务器版本:4.0.0 2018-07-29T14:32:58.666 + 0000 E查询[js] ReferenceError:未定义配置:@(shell):1:1 >
这是最后一条命令失败,因为它在那里找不到任何配置。似乎最后三个命令是分别执行的,因此,当尝试执行最后一条命令时,它会失败。我尝试删除了最后一个命令,并且脚本运行正常,但是,一旦我登录到mongo实例并手动运行了最后一个命令,就不会发生任何事情。
任何帮助将不胜感激!
ps。我是新手,不要恨我。
答案 0 :(得分:0)
我猜您正在尝试这样做:
echo "Creating Network..."
sudo docker network create mongo-cluster
echo "Creating 3 MongoDB Instances"
sudo docker run -d -p 30001:27017 --name primary --net mongo-cluster mongo mongod --replSet comments && sudo docker start primary
sudo docker run -d -p 30002:27017 --name failover1 --net mongo-cluster mongo mongod --replSet comments && sudo docker start failover1
sudo docker run -d -p 30003:27017 --name failover2 --net mongo-cluster mongo mongod --replSet comments && sudo docker start failover2
sleep 5 #let the quorum happens
sudo docker exec -it primary bash -c "echo 'config = {\"_id\": \"comments\",\"members\": [{\"_id\": 0,\"host\":\"primary:27017\"},{\"_id\": 1,\"host\":\"failover1:27017\"},{\"_id\":2,\"host\": \"failover2:27017\"}]};rs.initiate(config)' | mongo"
echo "Completed!"
问题: