- Reference
- https://stackoverflow.com/questions/63924043/mongo-replicaset-in-docker-couldnt-add-user-not-master
- https://stackoverflow.com/questions/27187591/deploy-mongodb-replicaset-servers-with-docker-on-different-physical-servers/32180276
- https://docs.mongodb.com/manual/core/replica-set-priority-0-member/
- https://www.howtogeek.com/howto/30184/10-ways-to-generate-a-random-password-from-the-command-line/
- Suggestion
- Review all of the mongod.conf setting when you want to go Production
Script for all server
cd PATH_TO_STORE_DATA
mkdir conf
mkdir db
mkdir backup
mkdir tmp
touch conf/mongod.conf
touch conf/replicaSet.js
date +%s | sha256sum | base64 | head -c 32 > conf/keyfile
chmod 400 conf/keyfile
docker run -d -p 27017:27017 \
--restart always \
-e TZ=THE_TIMEZONE_YOU_WANT \
-v /PATH_TO_STORE_DATA/mongodb:/data/mongo:z \
--user "$(id -u):$(id -g)" \
--name mongo \
-e MONGO_INITDB_ROOT_USERNAME=MONGO_ADMIN_NAME \
-e MONGO_INITDB_ROOT_PASSWORD=MONGO_ADMIN_PASSWORD \
mongo:5.0.3-focal --config /data/mongo/conf/mongod.conf
Suggest use the mongosh to setup replicaSet , https://docs.mongodb.com/mongodb-shell/
mongosh mongodb://SERVER_1_PUBLIC_IP:27017 -u MONGO_ADMIN_NAME -p MONGO_ADMIN_PASSWORD replicaSet.js