Bring the familiar Docker Compose workflow to Incus. incus-compose implements the Compose specification for the Incus ecosystem, allowing you to define and run multi-container applications using the compose.yaml files you already know.
docker-compose.yml files with Incus containersflowchart LR
subgraph F["your files"]
direction TB
CY[compose.yaml]
CI["compose.incus.yaml<br/>optional Incus overrides"]
DE[.env]
end
F --> IC[incus-compose]
IC --> P
subgraph P["one Incus project per compose project"]
direction TB
IMG["images<br/>copied from the shared cache"]
NET["bridge networks<br/>real IPs and DNS"]
VOL["storage volumes<br/>UID/GID shifted"]
INST["instances<br/>web-1, db-1, ..."]
HD["ic-healthd<br/>healthchecks and restarts"]
end
New to Incus? See Why Incus? for what the platform brings over a classic OCI engine setup.
Recorded during the beta - the workflow is unchanged in current releases:
Status: Stable.
The workflow you know:
up, down, start, stop, restart, list (and ps), logs, exec, config, plus build, healthd, incus (pass-through), and self-update.env interpolation, profiles, depends_on, secrets, and configscompose.incus.yaml override file - keep the upstream compose file untouched and put Incus tuning next to it docINCUS_COMPOSE_* environment variables for every flag, with a configurable parallel worker count docImages:
down/up, avoids registry rate limits)Networking:
Storage:
Operations:
depends_on: service_healthy ordering via the ic-healthd sidecar docup --scale and orphan pruningshm_size, container_name, etc.)Beyond any OCI engine:
x-incus-compose.devices docx-incus docRequires podman or docker for image building and an Incus https remote (needed for healthchecking) with OCI registries added.
See Getting Started for the full setup walkthrough.
Install the latest release:
curl -sSfL https://raw.githubusercontent.com/lxc/incus-compose/main/install.sh | sh -s -- -b ~/.local/bin
Or grab a prebuilt archive from the Releases Page.
On Arch Linux, install incus-compose-bin
(or incus-compose-git for builds from main)
from the AUR.
Then point it at your existing compose.yaml:
# Start services
incus-compose up -d
# View logs
incus-compose logs -f
# List running services
incus-compose list
# Stop and remove
incus-compose down
The following channels are available for questions and discussion around incus-compose.
You can file bug reports and feature requests at: https://github.com/lxc/incus-compose/issues/new
Community support is handled at: https://discuss.linuxcontainers.org
Fixes and new features are greatly appreciated. Make sure to read our contributing guidelines first!