Docker Compose for WSL containers.
Docker Compose for WSL containers.
Windows 11 can now run Linux containers natively with `wslc.exe`, no Docker Desktop required. It just doesn't come with Compose. rcompose fills that gap: point it at your existing `compose.yaml` and run `rcompose up`.
`PS>irm https://ricardoborges.github.io/rcompose/install.ps1 | iex`Copy
Installs to `%LOCALAPPDATA%\Programs\rcompose` and adds it to your PATH. No admin rights. Works on x64 and ARM64.
Same commands you already know
If you've used `docker compose`, there's nothing new to learn. From any folder with a compose file:
start everything in the background
rcompose up -dsee what's running, then follow the logs
rcompose ps rcompose logs -fopen a shell in a service
rcompose exec web shstop and clean up
rcompose down -vAlso there: `build`, `pull`, `start`, `stop`, `restart` and `config`, along with `-f`, `-p`, `--env-file` and `--profile`.
What it does for you
- Starts things in the right order, fast. Services that don't depend on each other come up in parallel, and `depends_on` conditions like `service_healthy` are respected.
- Only touches what changed. Running `rcompose up` again recreates just the containers whose configuration is different, the same way Docker Compose does.
- Copes with the preview's rough edges. The WSL container preview sometimes throws transient errors when several containers start at once. rcompose retries them instead of failing halfway.
- Tells you what won't work. When your file uses something `wslc` can't do yet, like `restart` policies or Linux-path bind mounts, you get a warning rather than a silent surprise.
Before you install
You need Windows 11 with the WSL container preview installed, so that `wslc.exe` is available. rcompose finds it through `WSLC_BIN`, then your PATH, then `C:\Program Files\WSL\wslc.exe`.
To update, run the install command again. To pin a version, set `$env:RCOMPOSE_VERSION = "v0.1.0"` first. Prefer building from source? `cargo install --path crates/rcompose-cli` from a clone of the repository works too.