package main import ( "fmt" "os/exec" "time" ) func dockerNetworkCreate() { fmt.Printf("\n\033[1;32mCreating Docker network %s for MongoDB replica set %s\033[0m\n", networkName, replicasetName) exec.Command("/usr/bin/docker network create", networkName) } func dockerPullMongo() { fmt.Printf("\n\033[1;32mPulling MongoDB Image\033[0m\n") exec.Command("/usr/bin/docker pull mongo") } func dockerRunMongo() { for containerNumber := 0; containerNumber < numberOfContainers; containerNumber++ { fmt.Printf("\n\033[1;32mStarting MongoDB Container %d with %s GB of memory\033[0m\n", containerNumber, get_memory()) dockerRunCmd := fmt.Sprintf("docker run -d -p 3000%d:27017 --name mongo%d --net %s -e MONGO_INITDB_ROOT_USERNAME=%s -e MONGO_INITDB_ROOT_PASSWORD=%s -v %s/mongo%d:/data/db -v %s:/opt/keyfile --restart unless-stopped mongo mongod --replSet %s --wiredTigerCacheSizeGB %s --keyFile /opt/keyfile/mongodb-keyfile", containerNumber, containerNumber, networkName, mongoInitdbRootUsername, mongoInitdbRootPassword, mongoBasePath, containerNumber, mongoBasePath, replicasetName, get_memory()) exec.Command(dockerRunCmd) } fmt.Printf("\n\033[1;32mWaiting for all containers to start\033[0m\n") time.Sleep(10 * time.Second) }