Docker Compose (3-node)
This guide maps directly to docker-compose.3node.yml in this repository.
Topology
monkdb001: HTTP4200, PGWire5432, transport4300monkdb002: HTTP4201, PGWire5433, transport4301
All nodes share cluster name monkdb-licensing-lab and join via discovery.seed_hosts=monkdb001.
Start
docker network create monkdb || true
docker compose -f docker-compose.3node.yml up -d monkdb001 monkdb002
docker-compose.3node.yml uses an external network named monkdb, so docker network create monkdb is required before first startup.
Compose File (Current)
services:
monkdb001:
image: rg.fr-par.scw.cloud/monkdb/monkdb:26.3.1-amd64
container_name: monkdb001
hostname: monkdb001
environment:
MONKDB_HEAP_SIZE: 1g
MONKDB_INDICES_FIELDDATA_BREAKER_LIMIT: 60%
command:
- -Ccluster.name=monkdb-licensing-lab
- -Cnetwork.host=0.0.0.0
- -Cnetwork.publish_host=monkdb001
- -Ctransport.port=4300
- -Cnode.name=monkdb001
- -Cdiscovery.seed_hosts=monkdb001
- -Ccluster.initial_master_nodes=monkdb001
- -Cauth.host_based.config.0.user=monkdb
- -Cauth.host_based.config.0.address=_local_
- -Cauth.host_based.config.0.method=trust
- -Cauth.host_based.config.99.method=password
ports:
- "4200:4200"
- "5432:5432"
- "4300:4300"
volumes:
- monkdb001-data:/data
networks:
- monkdb
monkdb002:
image: rg.fr-par.scw.cloud/monkdb/monkdb:26.3.1-amd64
container_name: monkdb002
hostname: monkdb002
environment:
MONKDB_HEAP_SIZE: 1g
MONKDB_INDICES_FIELDDATA_BREAKER_LIMIT: 60%
command:
- -Ccluster.name=monkdb-licensing-lab
- -Cnetwork.host=0.0.0.0
- -Cnetwork.publish_host=monkdb002
- -Ctransport.port=4300
- -Cnode.name=monkdb002
- -Cdiscovery.seed_hosts=monkdb001
- -Ccluster.initial_master_nodes=monkdb001
- -Cauth.host_based.config.0.user=monkdb
- -Cauth.host_based.config.0.address=_local_
- -Cauth.host_based.config.0.method=trust
- -Cauth.host_based.config.99.method=password
ports:
- "4201:4200"
- "5433:5432"
- "4301:4300"
volumes:
- monkdb002-data:/data
networks:
- monkdb
volumes:
monkdb001-data:
monkdb002-data:
networks:
monkdb:
external: true
name: monkdb
PS: If you are trying to use ARM64 instance to deploy MonkDB image, please pull appropriate MonkDB image for ARM64 architecture.
Verify
psql -h 127.0.0.1 -p 5432 -U monkdb -d monkdb -c "select id, master_node from sys.cluster;"
psql -h 127.0.0.1 -p 5432 -U monkdb -d monkdb -c "select id, name from sys.nodes order by name;"
Stop
docker compose -f docker-compose.3node.yml down
Reset data volumes
docker compose -f docker-compose.3node.yml down -v --remove-orphans
docker rm -f monkdb001 monkdb002 monkdb003 2>/dev/null || true
docker volume rm monkdb_monkdb001-data monkdb_monkdb002-data monkdb_monkdb003-data 2>/dev/null || true
For 3+ nodes
A license need to be procured for 3+ nodes of MonkDB provisioning. MonkDB is free for 2 nodes.