Skip to content

Instantly share code, notes, and snippets.

@MahdadGhasemian
Last active December 4, 2024 06:36
Show Gist options
  • Save MahdadGhasemian/fcc8ad89bf42950e71e638acd5b3969b to your computer and use it in GitHub Desktop.
Save MahdadGhasemian/fcc8ad89bf42950e71e638acd5b3969b to your computer and use it in GitHub Desktop.
Setting Up a MongoDB Replica Set With Docker Compass (Local Test)

How to Set Up a stable MongoDB Replica Set Localy for Developing

version: "3.9"

services:
  mongodb-primary:
    image: docker.io/bitnami/mongodb:5.0
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-primary
      - MONGODB_REPLICA_SET_MODE=primary
      - MONGODB_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123
    volumes:
      - "mongodb_master_data:/bitnami/mongodb"
    ports:
      - "27047:27017"

  mongodb-secondary:
    image: docker.io/bitnami/mongodb:5.0
    depends_on:
      - mongodb-primary
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-secondary
      - MONGODB_REPLICA_SET_MODE=secondary
      - MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary
      - MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123

  mongodb-arbiter:
    image: docker.io/bitnami/mongodb:5.0
    depends_on:
      - mongodb-primary
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-arbiter
      - MONGODB_REPLICA_SET_MODE=arbiter
      - MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary
      - MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123

# your-services:
#   ...
#   depends_on:
#     - mongodb-primary
#     - mongodb-secondary
#     - mongodb-arbiter

volumes:
  mongodb_master_data:
    driver: local

Connection URI for using inside the services:

mongodb://root:password123@mongodb-primary:27017/test?authSource=admin&directConnection=true

Connection URI for MongoCompass:

mongodb://root:password123@localhost:27047/test?authSource=admin&directConnection=true

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment