A proper Docker-Compose workflow for Incus. The idea started with Brian’s proof-of-concept; this is a ground-up build, rewritten three times to get the core of it right.
incus-compose runs multi-container apps on Incus from standard Compose files: point it at a compose.yaml and run incus-compose up. Incus pulls OCI images natively. Key bits:
- Familiar commands:
up,down,start,stop,restart,list(andps),logs,exec,config, plusbuild,healthd,incus(pass-through), andself-update - Compose project parsing via compose-go, with automatic
compose.incus.yamloverrides andx-incus/x-incus-composeextensions for raw Incus options - OCI image pulling from docker.io, ghcr.io, and other registries
- Two-stage image cache in a dedicated Incus project (survives
down/up, avoids registry rate limits) - Local image building via Podman/Docker
- Bridge networks with automatic name sanitization
- Static IPv4/IPv6 addresses with automatic DHCP ranges
- Port forwarding via proxy devices or kernel NAT mode
- Storage volumes with UID/GID shifting; bind mounts (pass-through by default, optional seeding)
- Health checks, restart policies, and
depends_on: service_healthyordering via theic-healthdsidecar - Service scaling with
up --scaleand orphan pruning - Incus project isolation
- Resource limits and other advanced compose features (
shm_size,container_name, etc.) - Configuration via
INCUS_COMPOSE_*environment variables for every flag, with a configurable parallel worker count
The examples include a full Immich stack, so it handles real multi-service apps.
Requirements: An https Incus remote (needed for ic-healthd). See: incus-compose
Install:
curl -sSfL https://raw.githubusercontent.com/lxc/incus-compose/main/install.sh | sh -s -- -b ~/.local/bin
It’s still beta — feedback from real compose projects is exactly what I’m after.
René
Repo: GitHub - lxc/incus-compose: Bring the familiar Docker Compose workflow to Incus containers · GitHub
Releases: Releases · lxc/incus-compose · GitHub
Changelog: incus-compose/CHANGELOG.md at main · lxc/incus-compose · GitHub
Examples: incus-compose/examples at main · lxc/incus-compose · GitHub
Compatibility: incus-compose