Sometimes you need a replica set in your local environment (perhaps you want to use the oplog), but it's somewhat involved to spin up a series of mongo containers and provide the correct configuration. This docker image will create a self-contained 3 node replica set (that is, all three nodes are running in one container).
THIS IS ONLY USEFUL FOR LOCAL DEVELOPMENT
User info is configured on the admin database:
- username:
dev
- password:
dev
Each instance exposes a port, all listening on 0.0.0.0 interface:
- db1:
27017
[primary] - db2:
27018
- db3:
27019
The container will create one volume at /data
, but you can mount one or more to your host at these paths:
- db1:
/data/db1
[primary] - db2:
/data/db2
- db3:
/data/db3
You can customize the replica set name by providing REPLICA_SET_NAME
environment variable. Default name is: rs0
The hostname can be set provided a REPLICA_SET_HOST
environment variable. Default host is: localhost
docker run -d -p 27017:27017 -p 27018:27018 -p 27019:27019 -v /data/mongodb:/data -e "REPLICA_SET_NAME=rs0" -e "REPLICA_SET_HOST=localhost" -e "USERNAME=dev" -e "PASSWORD=dev" --restart=always lacour/docker-mongo-local-replicaset --name mongo
mongodb://dev:dev@mongo:27017,mongo:27018,mongo:27019/db?authSource=admin
If you mount something into /data/db1
, the container will not go through it's initialization process, but it will also assume that you have mounted all 3 volumes -- so mount all 3 or none. You can customize the username/password by providing USERNAME
/PASSWORD
environment variables (but you probably don't need to).