Docker & Helm
Docker
You can easily run the Iggy server with Docker - the official images can be found here, simply type docker pull apache/iggy.
Below is an example of the docker-compose.yml file which additionally overrides the default configuration (described in the section below) with the environment variables. If you prefer using the configuration file, you can mount it as a volume and provide the path to it with the IGGY_CONFIG_PATH environment variable.
When running the container, make sure to include the additional capabilities required by io_uring and CPU affinity:
iggy:
image: apache/iggy:latest
container_name: iggy
restart: unless-stopped
cap_add:
- SYS_NICE
security_opt:
- seccomp:unconfined
ulimits:
memlock:
soft: -1
hard: -1
environment:
- IGGY_ROOT_USERNAME=iggy
- IGGY_ROOT_PASSWORD=Secret123
- IGGY_HTTP_ENABLED=true
- IGGY_HTTP_ADDRESS=0.0.0.0:80
- IGGY_TCP_ENABLED=true
- IGGY_TCP_ADDRESS=0.0.0.0:3000
- IGGY_QUIC_ENABLED=false
- IGGY_WEBSOCKET_ENABLED=false
- IGGY_HEARTBEAT_ENABLED=true
- IGGY_HEARTBEAT_INTERVAL=5s
ports:
- "3010:80"
- "5100:3000"
networks:
- iggy
volumes:
- iggy:/iggy/local_data
networks:
iggy:
volumes:
iggy:Or when running with docker run:
docker run --cap-add=SYS_NICE --security-opt seccomp=unconfined --ulimit memlock=-1:-1 apache/iggy:edgeWhy these capabilities?
SYS_NICE- required for setting CPU affinity (sched_setaffinity) in the thread-per-core architectureseccomp:unconfined- required forio_uringsyscalls which are blocked by Docker's default seccomp profilememlock: -1-io_uringneeds to lock memory pages shared between user space and kernel
Available images
| Image | Description |
|---|---|
apache/iggy | Server + CLI |
apache/iggy-web-ui | Standalone Web UI |
apache/iggy-connect | Connectors runtime |
apache/iggy-mcp | MCP server |
Images tagged latest are based on stable releases. Images tagged edge are built from the latest master branch.
Building from source
The Dockerfile uses a multi-stage build: Rust compilation (including the Web UI via npm), then a minimal Debian slim image. To build:
docker build -t iggy .Or use docker compose up directly from the repository root.
Running the CLI inside the container
docker exec -it iggy-server /iggy -u iggy -p iggy stream listHelm charts
Helm charts for Kubernetes deployment are available in the repository.
Quick start
helm install iggy ./helm/charts/iggyChart components
The chart includes templates for:
- Deployment - the Iggy server pod with required security context (SYS_NICE, seccomp unconfined, unlimited memlock)
- Service - exposes TCP (8090), QUIC (8080), HTTP (3000), and WebSocket (8092) ports
- ServiceAccount - dedicated service account
- PersistentVolumeClaim - persistent storage for
local_data - HPA - Horizontal Pod Autoscaler (optional)
- Ingress - optional ingress for HTTP access
- ServiceMonitor - Prometheus ServiceMonitor for metrics collection (optional)
- Secret - root user credentials
Key values
# values.yaml (excerpt)
replicaCount: 1
image:
repository: apache/iggy
tag: latest
persistence:
enabled: true
size: 10Gi
resources:
limits:
memory: 8Gi
requests:
cpu: 2
memory: 4Gi
serviceMonitor:
enabled: falseCustomize the values file for your environment and deploy with:
helm install iggy ./helm/charts/iggy -f my-values.yaml