Skip to content

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

docker-compose.yml
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