This tool provisions a MongoDB cluster for testing. All nodes of the cluster run in a single container.
# Start a 3-node replica set:
docker run -it --rm -p27017-27019:27017-27019 felipegasper298/mongo-provision 8.0 --replicaset --nodes 3
# … or, for a sharded cluster:
docker run -it --rm -p27017:27017 felipegasper298/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!
Build the container:
docker build . -t mongo-provision
… then it’s the same as the above but with a local mongo-provision image
instead of felipegasper298/mongo-provision.
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.
To check whether the cluster is ready, exec into the container and check if the
ready file exists. For example:
while ! docker exec my-container-name [ -e ready ]; do
echo "Still waiting for cluster to be ready …"
done
- 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: