Docker Deployment

Run InferaDB services as Docker containers.

Container Images

InferaDB publishes official container images to Docker Hub:

Image Description
inferadb/inferadb-engine Authorization engine (data plane)
inferadb/inferadb-control Control plane (admin API)
inferadb/inferadb-ledger Storage layer (Raft consensus)

Images are available for linux/amd64 and linux/arm64.

Engine Configuration

Configure the Engine via environment variables prefixed with INFERADB__ENGINE__ (double underscores as separators).

Storage Backend

# In-memory (development)
docker run -p 8080:8080 -p 8081:8081 \
  -e INFERADB__ENGINE__STORAGE=memory \
  inferadb/inferadb-engine:latest

# Ledger (production)
docker run -p 8080:8080 -p 8081:8081 \
  -e INFERADB__ENGINE__STORAGE=ledger \
  -e INFERADB__ENGINE__LEDGER__ENDPOINT=http://ledger:50051 \
  inferadb/inferadb-engine:latest

Common Environment Variables

Variable Default Description
INFERADB__ENGINE__STORAGE memory Storage backend (memory or ledger)
INFERADB__ENGINE__LEDGER__ENDPOINT Ledger gRPC endpoint
INFERADB__ENGINE__LISTEN__HTTP 0.0.0.0:8080 HTTP listen address
INFERADB__ENGINE__LISTEN__GRPC 0.0.0.0:8081 gRPC listen address
INFERADB__ENGINE__LISTEN__MESH 0.0.0.0:8082 Mesh/internal listen address
INFERADB__ENGINE__CACHE__ENABLED true Enable evaluation cache
INFERADB__ENGINE__CACHE__CAPACITY 100000 Maximum cache entries
INFERADB__ENGINE__CACHE__TTL 300 Cache TTL in seconds
INFERADB__ENGINE__AUTH__ENABLED true Enable JWT authentication

See Configuration Reference for the full list of settings.

Docker Compose Example

services:
  ledger:
    image: inferadb/inferadb-ledger:latest
    command: ["--single", "--data", "/data"]
    volumes:
      - ledger-data:/data
    ports:
      - "50051:50051"

  engine:
    image: inferadb/inferadb-engine:latest
    environment:
      INFERADB__ENGINE__STORAGE: ledger
      INFERADB__ENGINE__LEDGER__ENDPOINT: http://ledger:50051
    ports:
      - "8080:8080"
      - "8081:8081"
    depends_on:
      - ledger

  control:
    image: inferadb/inferadb-control:latest
    command:
      - "--storage=ledger"
      - "--ledger-endpoint=http://ledger:50051"
    ports:
      - "9090:9090"
    depends_on:
      - ledger

volumes:
  ledger-data:

Pod Security

All images run as non-root with a read-only root filesystem:

Property Value
User Non-root (UID 65532)
Filesystem Read-only root filesystem
Capabilities No added capabilities
Privilege escalation Disabled

Mount a volume for writable storage (e.g., Ledger data directory).

securityContext:
  runAsNonRoot: true
  runAsUser: 65532
  readOnlyRootFilesystem: true
  allowPrivilegeEscalation: false