#23954·che

Add a Docker Compose provider to the Universal Developer Image

Author: rohanKanojiaCreated Sep 17, 2026Updated Sep 18, 2026
Labelskind/enhancementseverity/P2team/Barea/udi

Is your enhancement related to a problem? Please describe

The UDI ships podman but no Docker Compose provider, so podman compose cannot run:

bash
$ /usr/bin/podman.orig compose version --short
Error: looking up compose provider failed
7 errors occurred:
        * exec: "/home/user/.docker/cli-plugins/docker-compose": stat ...: no such file or directory
        * exec: "/usr/local/lib/docker/cli-plugins/docker-compose": stat ...: no such file or directory
        * exec: "/usr/local/libexec/docker/cli-plugins/docker-compose": stat ...: no such file or directory
        * exec: "/usr/lib/docker/cli-plugins/docker-compose": stat ...: no such file or directory
        * exec: "/usr/libexec/docker/cli-plugins/docker-compose": stat ...: no such file or directory
        * exec: "docker-compose": executable file not found in $PATH
        * exec: "podman-compose": executable file not found in $PATH

This blocks two things:

  1. devcontainer.json files that use dockerComposeFile. Work on native devcontainer support in Che (#23458, eclipse-che/che-server#1050) drives @devcontainers/cli with podman as the engine. The CLI resolves its compose provider by running <engine> compose version, so with no provider present every compose-based repository is unusable.
  2. Users who simply want podman compose up for a multi-service stack inside their workspace, independent of devcontainers.

Describe the solution you'd like

Bundle a compose provider in the UDI, so that podman compose works out of the box.

Describe alternatives you've considered

Installing it per-workspace. This works today and is what the verification below used:

bash
python3 -m pip install --user podman-compose
export PATH="$HOME/.local/bin:$PATH"
ln -sf /usr/bin/podman.orig "$HOME/.local/bin/podman"   # ahead of the kubedock wrapper

It is not a solution: it costs every user a manual step, it fails in air-gapped environments where PyPI is unreachable, and with persistUserHome disabled it evaporates on every workspace restart. The same argument was made for bundling the devcontainer CLI in devfile/developer-images#267.

Leaving compose unsupported. Viable, but it permanently excludes a common class of repository from devcontainer support in Che, and users hitting it get a confusing seven-path error rather than a statement that compose is not available.

Additional context

No response