Deploy with Docker¶
Run a single-node GVDB server in a container. Best for development and small workloads.
Run¶
docker run -d \
--name gvdb \
-p 50051:50051 \
-v "$PWD/gvdb-data:/var/lib/gvdb" \
ghcr.io/jonathanberhe/gvdb:latest \
gvdb-single-node --port 50051 --data-dir /var/lib/gvdb
The image publishes both GVDB binaries and supporting libraries. The same image is used for every node type — change the CMD to pick the role.
Environment variables¶
The clustered binaries honor a handful of env vars:
| Var | Honored by | Replaces |
|---|---|---|
GVDB_BIND_ADDRESS |
coordinator, data-node, query-node, proxy | --bind-address |
GVDB_ADVERTISE_ADDRESS |
coordinator, data-node, query-node | --advertise-address |
GVDB_DATA_DIR |
all clustered binaries | --data-dir |
GVDB_RAFT_ADDRESS |
coordinator | --raft-address |
gvdb-single-node does not read env vars — use --config, --port, --data-dir, --node-id flags.
Example:
docker run -d \
-e GVDB_BIND_ADDRESS=0.0.0.0:50060 \
-e GVDB_ADVERTISE_ADDRESS=data-1.gvdb.svc:50060 \
-e GVDB_DATA_DIR=/var/lib/gvdb \
-v "$PWD/gvdb-data:/var/lib/gvdb" \
-p 50060:50060 \
ghcr.io/jonathanberhe/gvdb:latest \
gvdb-data-node --node-id 101 --coordinator coord.gvdb.svc:50051
Config file¶
Mount a YAML config:
docker run -d \
-v "$PWD/config.yaml:/etc/gvdb/config.yaml" \
-v "$PWD/gvdb-data:/var/lib/gvdb" \
-p 50051:50051 \
ghcr.io/jonathanberhe/gvdb:latest \
gvdb-single-node --config /etc/gvdb/config.yaml
Example config.yaml:
server:
bind_address: "0.0.0.0"
grpc_port: 50051
auth:
enabled: true
roles:
- key: "admin-key"
role: admin
collections: ["*"]
storage:
data_dir: /var/lib/gvdb
logging:
level: info
See the configuration reference for every setting.
docker-compose¶
services:
gvdb:
image: ghcr.io/jonathanberhe/gvdb:latest
command: gvdb-single-node --port 50051 --data-dir /var/lib/gvdb
ports:
- "50051:50051"
volumes:
- gvdb-data:/var/lib/gvdb
environment:
GVDB_BIND_ADDRESS: "0.0.0.0:50051"
volumes:
gvdb-data:
Distributed deployments¶
For multi-node clusters, use the Helm chart. Running the distributed binaries directly with Docker is supported but requires manual coordination of node addresses, ports, and config.
Metal GPU¶
The prebuilt image is Linux x86_64. Apple Metal acceleration is macOS-only and requires a source build with -DGVDB_WITH_METAL=ON.
See also¶
- Installation
- Helm deploy for clusters
- Configuration