Add a Docker Compose provider to the Universal Developer Image
Is your enhancement related to a problem? Please describe
The UDI ships podman but no Docker Compose provider, so podman compose cannot run:
$ /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 $PATHThis blocks two things:
devcontainer.jsonfiles that usedockerComposeFile. Work on native devcontainer support in Che (#23458, eclipse-che/che-server#1050) drives@devcontainers/cliwith 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.- Users who simply want
podman compose upfor 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:
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 wrapperIt 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
Source: eclipse-che/che