How to create local docker replica set:
1. Open CMD as admin
2. Pull official MongoDB image
a. Run --> docker pull mongo
3. Create docker network
a. Run --> docker network ls "check existing networks"
b. Run --> docker network create mongodb-cluster
4. Setting up our containers
a. To start up our first container, "mongo1" run the command:
i. Run --> docker run -d --net mongodb-cluster -p 27017:27017 --name mongo1 mongo mongod --replSet docker-replica --port 27017
ii. Run --> docker run -d --net mongodb-cluster -p 27018:27018 --name mongo2 mongo mongod --replSet docker-replica --port 27018
iii. Run --> docker run -d --net mongodb-cluster -p 27019:27019 --name mongo3 mongo mongod --replSet docker-replica --port 27019
5. Setting up replication
a. Run --> docker exec -it mongo1 mongosh
b. Run --> config = {"_id" : "docker-replica","members" : [{"_id" : 0,"host" : "mongo1:27017"},{"_id" : 1,"host" : "mongo2:27018"},{"_id" : 2,"host" : "mongo3:27019"}]}
6. Setting priorities for each node
a. Run --> rs.initiate(config)
b. Run --> cfg = rs.conf()
c. Run --> cfg.members[0].priority = 1
d. Run --> cfg.members[1].priority = 0.5
e. Run --> cfg.members[2].priority = 0.5
f. Run --> rs.reconfig(cfg)
g. Run --> rs.status() //to check status for each replica set
7. Update windows hosts file
a. Add --> 127.0.0.1 mongo1 mongo2 mongo3 (optional step you can still use localhost in connections string as below)
8. Ensure all nodes are running from containers tab
9. Connection string will be "mongodb://localhost:27017/tpay-nosql-db?readPreference=primary&appname=MongoDB%20Compass&directConnection=true&ssl=false"
10. Create DB with name "tpay-nosql-db" then create collection with name "subscriptions"