MongoDB Replica Set
This service sets up a MongoDB replica set with three members.
Prerequisites
-
Generate a key file for the replica set:
openssl rand -base64 756 > ./secrets/rs0.key
Initialization
-
Start the services:
docker compose up -dThe services will automatically initialize the replica set through the
mongo-initinit container. This container:- Waits for all MongoDB nodes to be healthy
- Connects to the primary node
- Initializes the replica set with internal container names
- Uses container-based networking for communication
-
Verify the replica set status:
docker exec -it mongodb-replicaset-mongo1-1 mongosh -u root -p password --authenticationDatabase admin --eval "rs.status()"
Services
mongo1: The first member of the replica set.mongo2: The second member of the replica set.mongo3: The third member of the replica set.
Configuration
TZ: The timezone for the container, default isUTC.MONGO_VERSION: The version of the MongoDB image, default is8.0.13.MONGO_INITDB_ROOT_USERNAME: The root username for the database, default isroot.MONGO_INITDB_ROOT_PASSWORD: The root password for the database, default ispassword.MONGO_INITDB_DATABASE: The initial database to create, default isadmin.MONGO_REPLICA_SET_NAME: The name of the replica set, default isrs0.MONGO_PORT_OVERRIDE_1: The host port for the first member, default is27017.MONGO_PORT_OVERRIDE_2: The host port for the second member, default is27018.MONGO_PORT_OVERRIDE_3: The host port for the third member, default is27019.
Volumes
secrets/rs0.key: The key file for authenticating members of the replica set.
Security
The replica set key file is mounted read-only and copied to /tmp inside the container with proper permissions (400). This approach ensures cross-platform compatibility (Windows/Linux/macOS) while maintaining security requirements. The key file is never modified on the host system.