Docker Quickstart¶
Run Hookaido without installing Go. Docker is enough.
Use the Official Image (Recommended)¶
Pull from GitHub Container Registry (GHCR):
Tag guidance:
:latesttracks the newest stable release.:vX.Y.Zpins an exact release (recommended for production).- Digest pinning (
@sha256:...) is the strongest immutable option.
Published architectures:
linux/amd64linux/arm64
Run with a Hookaidofile¶
- Create a
Hookaidofilein your project directory (see Getting Started). - Set environment variables and start the container:
docker run -d \
--name hookaido \
-p 8080:8080 \
-p 9443:9443 \
-p 2019:2019 \
-e HOOKAIDO_PULL_TOKEN=mytoken \
-e HOOKAIDO_INGRESS_SECRET=mysecret \
-v $(pwd)/Hookaidofile:/app/Hookaidofile:ro \
-v hookaido-data:/app/.data \
ghcr.io/nuetzliches/hookaido:latest
This mounts config as read-only and persists SQLite data in a named volume.
Docker Compose¶
# docker-compose.yml
services:
hookaido:
image: ghcr.io/nuetzliches/hookaido:latest
ports:
- "8080:8080" # Ingress
- "9443:9443" # Pull API
- "2019:2019" # Admin API
environment:
HOOKAIDO_PULL_TOKEN: ${HOOKAIDO_PULL_TOKEN}
HOOKAIDO_INGRESS_SECRET: ${HOOKAIDO_INGRESS_SECRET}
volumes:
- ./Hookaidofile:/app/Hookaidofile:ro
- hookaido-data:/app/.data
restart: unless-stopped
volumes:
hookaido-data:
Start with:
Build Locally (Optional)¶
If you want to test local Dockerfile changes:
Or with explicit build metadata:
docker build \
--build-arg VERSION=v0.1.0 \
--build-arg COMMIT=$(git rev-parse --short HEAD) \
--build-arg BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
-t hookaido:local .
Run local build:
docker run -d \
--name hookaido-local \
-p 8080:8080 -p 9443:9443 -p 2019:2019 \
-e HOOKAIDO_PULL_TOKEN=mytoken \
-v $(pwd)/Hookaidofile:/app/Hookaidofile:ro \
-v hookaido-data:/app/.data \
hookaido:local
Health Check¶
Hot Reload¶
Mount config read-write and pass --watch:
docker run -d \
--name hookaido \
-p 8080:8080 -p 9443:9443 -p 2019:2019 \
-e HOOKAIDO_PULL_TOKEN=mytoken \
-v $(pwd)/Hookaidofile:/app/Hookaidofile \
-v hookaido-data:/app/.data \
ghcr.io/nuetzliches/hookaido:latest \
run --config /app/Hookaidofile --db /app/.data/hookaido.db --watch
Production Notes¶
- Use a named volume (not a bind mount) for
/app/.datato keep SQLite WAL durable. - The image runs as non-root user
hookaido. - For TLS, mount cert/key files and reference them in your
Hookaidofile. - Admin API defaults to
127.0.0.1:2019. To expose it from Docker, setadmin_api { listen :2019 }in your Hookaidofile.