Este é o script que eu consegui criar:
#!/bin/bash
echo "Updating the system, this might take a couple minutes..."
sudo yum -y update
echo "Installing Docker"
curl -fsSL https://get.docker.com/ | sh
echo "Starting Services"
sudo systemctl start docker
sudo systemctl enable docker
echo "Creating Network..."
sudo docker network create mongo-cluster
echo "Creating 3 MongoDB Instances"
sudo docker run -p 30001:27017 --name primary --net mongo-cluster mongo
mongod --replSet comments && sudo docker start primary
sudo docker run -p 30002:27017 --name failover1 --net mongo-cluster mongo
mongod --replSet comments && sudo docker start failover1
sudo docker run -p 30003:27017 --name failover2 --net mongo-cluster mongo
mongod --replSet comments && sudo docker start failover2
docker exec -it primary bash -c "echo 'primary = (new
Mongo(\"localhost:27017\")).getDB(\"test\")' | mongo && echo 'config =
{\"_id\": \"comments\",\"members\": [{\"_id\": 0,\"host\":
\"primary:27017\"},{\"_id\": 1,\"host\":\"failover1:27017\"},{\"_id\":
2,\"host\": \"failover2:27017\"}]}' | mongo && echo 'rs.initiate(config)' |
mongo"
Por algum motivo, quando o último comando docker
é executado, ele falha. Eu posso ver que as duas primeiras partes correm bem e vejo a saída na linha de comando, mas o rs.initiate falha. Razão é que ele não encontra nenhuma configuração ... Tanto quanto eu posso dizer, eu preciso executar os 3 comandos na mesma sessão de mongo caso contrário não furar. Por alguma razão, ao executar a última parte do script, a sessão do mongo termina após cada comando. Alguma idéia de como e como corrigir isso?