Skip to content

Instantly share code, notes, and snippets.

@bojidaryovchev
Last active March 18, 2023 00:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bojidaryovchev/d0cd4894efbac208caefdb6bbe91dbb2 to your computer and use it in GitHub Desktop.
Save bojidaryovchev/d0cd4894efbac208caefdb6bbe91dbb2 to your computer and use it in GitHub Desktop.
MongoDB Replica Set docker-compose up (from ChatGPT 4 with ❤️)
  1. Put the docker-compose.yml, initiate-replica.js and mongodb-keyfile in the same directory (e.g. project root)
  2. Run docker-compose up (or docker-compose up -d for detached mode)
  • you might have to modify the permissions on your keyfile, in order to do so you have to run chmod 600 mongodb-keyfile (remember to use Git Bash and not just a regular console)
version: "3.8"
services:
mongo1:
image: mongo:4.4
command: >
bash -c "chown mongodb:mongodb /data/keyfile/mongodb-keyfile
&& chmod 600 /data/keyfile/mongodb-keyfile
&& mongod --keyFile /data/keyfile/mongodb-keyfile --replSet my-mongo-set --bind_ip_all"
volumes:
- ./mongodb-keyfile:/data/keyfile/mongodb-keyfile
networks:
- mongo_cluster
mongo2:
image: mongo:4.4
command: >
bash -c "chown mongodb:mongodb /data/keyfile/mongodb-keyfile
&& chmod 600 /data/keyfile/mongodb-keyfile
&& mongod --keyFile /data/keyfile/mongodb-keyfile --replSet my-mongo-set --bind_ip_all"
volumes:
- ./mongodb-keyfile:/data/keyfile/mongodb-keyfile
networks:
- mongo_cluster
mongo3:
image: mongo:4.4
command: >
bash -c "chown mongodb:mongodb /data/keyfile/mongodb-keyfile
&& chmod 600 /data/keyfile/mongodb-keyfile
&& mongod --keyFile /data/keyfile/mongodb-keyfile --replSet my-mongo-set --bind_ip_all"
volumes:
- ./mongodb-keyfile:/data/keyfile/mongodb-keyfile
networks:
- mongo_cluster
mongo-init-replica:
image: mongo:4.4
volumes:
- ./initiate-replica.js:/scripts/initiate-replica.js
depends_on:
- mongo1
- mongo2
- mongo3
entrypoint:
[
"bash",
"-c",
'while ! mongo --host mongo1 --eval ''db.adminCommand("ping")''; do sleep 5; done && mongo --host mongo1 --eval ''load("/scripts/initiate-replica.js")''',
]
networks:
- mongo_cluster
networks:
mongo_cluster:
rs.initiate({
_id: "my-mongo-set",
members: [
{ _id: 0, host: "mongo1:27017" },
{ _id: 1, host: "mongo2:27017" },
{ _id: 2, host: "mongo3:27017" },
],
});
i1gdKeo0rfbSw5OwDIxgTlISmcZvfU4ygOfMw7rnZWGxDSOi1TCeKt88AlH2wbkT
tArlm8/rxdoSRS7xZscagaVA6X3IJKz52tiG8kRLTOSuW4VgMGWUinR3P6AGZbkh
ESy0yYiQDB2UQYXFLN5cTYJY84EZtxv9W2j1VlBMJ4bvXbs6fFHMrAHiFMjlrDP4
LCi+j566mLxZrAPLKQ1QiLGQACMRfq3skXk/bbb4mro0Xcfg7+arYEFqVBmknujC
AVlAuWSKwXZY47/BM1HgxAKQ7By+zmFwJI0q0kaTPBWnkL5MX9hkyeU4alSoM+5K
s4PIOFjXO7ebLxm/4lB3GXa6dLg8LyZVVGwylsoOYwLHO8vnnnpsTCOisyEMc+3J
sK1NP+YgZVGqY2Bl/n/YGimVy9NWMuZyYvtdO+PEsM/gW0Ns3PqClzYQeLh66Hwi
a1+r6Z+V5chNpLXUZ9RujiglBrNhINiYovXBZrTaiSEPP5a0A4Vgw/yHuG8n0x5F
YXtzlbKdiTsjDgURoeJPQQGkQxTlbwoC0JEmshQlM+xJNxAI1MD3ajafvWhsXBpB
ruUFph/LlczlZ2FF+IGd27yxUUZRqCIaV8u4U597KrRenVInw9RpO5skTmR52kso
POykVXFlPA5eeAzoDQdJzfGXs6ZLJUPYNZXKQyMpG+xOk9f6TcJmQ9Bs09R7r+Lf
evJ7zqx7XjrsHqqRuoogqGCQXw1v1fu5kDkBg4SCztjAk1mTNfzeWJsDzaIwjoNI
/wuZ/mEPyNFBIeREN8ZO2HlupX7CZJD8lDim4GNnlnnJyqd95M61/WNLvhZOEN4h
/6J3FUVm6aZxMtPISnZY622GPPNmF85vIbfsCcK0cScWI5GywDhXFKjrH0JP3hOP
wWYzTtn07IFy8OE06+Vz3438dZrtjzkfOfpaMb5FfE6B7jhDctc2+kvhjSL/52eL
5aPzoWC5MSKZ32otdOwEGEP4pQon
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment