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