Docker, Compose & Kubernetes
Deploying KOLMOS with the official Dockerfile, docker-compose, and Kubernetes manifests.
1. Docker Image
The official `Dockerfile` is a two-stage build — a pinned Rust builder stage compiling `kolmos-cli` with the `s3` feature, and a slim `debian:bookworm-slim` runtime stage. The container runs as a non-root `kolmos` user, exposes `/data` as a volume, and defaults to `kolmos --root /data serve --host 0.0.0.0` on port 5432. Note the shipped image builds with S3 support but without the Postgres/MySQL/Mongo *ingest* connectors — those are for batch-loading external databases, separate from the wire-protocol servers.
docker run -d \
-p 5432:5432 -p 3306:3306 -p 27017:27017 \
-v ./data:/data \
-e KOLMOS_SERVE_PASSWORD=my-secret-password \
kolmos/kolmos:latest \
--root /data serve --host 0.0.0.0 --mysql-port 3306 --mongo-port 270172. docker-compose
The repo's `docker-compose.yml` starts just the `kolmos` service by default (local-filesystem storage), reading secrets like `KOLMOS_SERVE_PASSWORD` from a git-ignored `.env` file. Run with the `dev` profile to additionally spin up a MinIO + `minio-init` pair, giving you a real S3-compatible target for testing cold-storage offload or backups without touching a cloud account.
# Local-fs only:
docker compose up
# With a local MinIO S3 endpoint for testing R2/S3 features:
docker compose --profile dev up3. Kubernetes
There's no packaged Helm chart — `docs/deployment.md` in the repo ships plain YAML examples instead: a `Deployment`/`Service` pair for running replicas behind a load balancer (see the High Availability guide for the readiness-probe wiring against `/healthz`), and a `CronJob` for scheduled backups. Copy and adapt these directly rather than expecting `helm install`.
4. What's Intentionally Not Provided
- No systemd unit file — if you're running on bare metal, write your own service unit around the `kolmos` binary. - No Helm chart — use the plain manifests in `docs/deployment.md` as a starting point. - No install script — deployment is Docker image or self-built binary via `cargo build --release -p kolmos-cli`. - No CI-published container registry — this is a deliberate v1 decision to keep image provenance local-build-only; build and push your own image to your registry as part of your pipeline.