This tool provisions a MongoDB cluster for testing. All nodes of the cluster run in a single container.
# Build the container:
docker build . -t mongo-provision
# Start a 3-node replica set:
docker run -it --rm -p27017-27019:27017-27019 mongo-provision 8.0 --replicaset --nodes 3
# … or, for a sharded cluster:
docker run -it --rm -p27017:27017 mongo-provision 8.0 --replicaset --sharded 3 --nodes 3
The above will hang indefinitely until you kill it, e.g., via CTRL-C.
Then, in another terminal, run:
# for the replset:
mongosh mongodb://localhost:27017,localhost:27018,localhost:27019
# … or, for sharded:
mongosh mongodb://localhost:27017
… and you’re in!
The arguments to the container are:
This container stores its state (e.g., mongod data files) under /data.
To introspect that state outside the container, mount a volume to that path
in the container.
- You MUST anticipate the bound ports and export them.
- The container’s platform will dictate server version availability. For example, you can’t create pre-v5 clusters on Linux/ARM64 because no official builds were made for that version/platform combination.
This uses: