Ember is available as a container image built from scratch (no OS, no shell: just the static binary and CA certificates).
docker run --rm --network host ghcr.io/alexandre-daubois/emberThe image defaults to --daemon --expose :9191. This means:
- No TUI (headless mode)
- Prometheus metrics available on port
9191(/metricsand/healthz) - Connects to the Caddy admin API at
http://localhost:2019
Ember needs to reach the Caddy admin API. Two options:
Use --network host so the container shares the host's network stack:
docker run --rm --network host ghcr.io/alexandre-daubois/emberPoint Ember to the Caddy service by name or IP:
docker run --rm ghcr.io/alexandre-daubois/ember --daemon --expose :9191 --addr http://caddy:2019Override the default CMD by appending flags:
docker run --rm --network host ghcr.io/alexandre-daubois/ember \
--daemon --expose :9191 --interval 2s --metrics-prefix myappA minimal setup with Caddy and Ember as a sidecar:
services:
caddy:
image: caddy:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
ember:
image: ghcr.io/alexandre-daubois/ember
network_mode: "service:caddy"
depends_on:
- caddyWith this setup, Ember runs in the same network namespace as Caddy and can reach localhost:2019 directly.
Caution: The image is built from
scratch: there is no shell, noexec, and no debugging tools inside the container. Usedocker logsto read Ember's stderr output.