Skip to content

devcontainer: skip legacy docker-compose in docker-in-docker#91

Merged
bilby91 merged 1 commit into
mainfrom
fix-dind-compose-none
Jun 12, 2026
Merged

devcontainer: skip legacy docker-compose in docker-in-docker#91
bilby91 merged 1 commit into
mainfrom
fix-dind-compose-none

Conversation

@bilby91

@bilby91 bilby91 commented Jun 12, 2026

Copy link
Copy Markdown
Member

Fix (continuation of #89, #90)

#90 pinned dockerDashComposeVersion: v2, and the v2 plugin (docker compose) did install — but the released docker-in-docker feature also installs the legacy docker-compose (hyphen) command. On bookworm/arm64 that goes through a global pip install docker-compose, which fails under PEP 668:

error: externally-managed-environment
ERROR: Feature "Docker (Docker-in-Docker)" failed to install!

amd64 keeps passing because it gets a prebuilt Compose-v1 binary (no pip).

Why none is safe

  • The repo only uses docker compose v2runtime/docker/compose.go states "legacy docker-compose is not supported" and execs the v2 plugin.
  • The v2 plugin comes from the moby-compose apt package, installed independently of this option (already succeeded in the devcontainer: use Compose v2 in docker-in-docker #90 run).
  • none is gated cleanly (if [ "$DOCKER_DASH_COMPOSE_VERSION" != "none" ]) and simply skips the hyphen command + its pip path.

Status of the prebuild chain

Only verifiable by the DevContainer Prebuild run on main after merge.

🤖 Generated with Claude Code

Setting dockerDashComposeVersion=v2 still left the released feature
installing the legacy `docker-compose` (hyphen) command, which on
bookworm/arm64 goes through a global `pip install docker-compose` and
fails under PEP 668 (amd64 gets a prebuilt v1 binary, so it passed).

Use "none": the repo only uses `docker compose` v2 (see
runtime/docker/compose.go — legacy docker-compose is unsupported), and
the v2 plugin is installed separately via the moby-compose package, so
nothing of value is lost. This drops the pip path that broke arm64.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@bilby91, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 1 hour, 35 minutes, and 46 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more credits in the billing tab to continue.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ba34615f-6c2a-4814-9f1a-ec71dec35c56

📥 Commits

Reviewing files that changed from the base of the PR and between e8d9ab7 and 66fcdec.

📒 Files selected for processing (1)
  • .devcontainer/devcontainer-build.json
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix-dind-compose-none

Comment @coderabbitai help to get the list of available commands and usage tips.

@bilby91 bilby91 merged commit 3e13ac9 into main Jun 12, 2026
11 of 12 checks passed
bilby91 added a commit that referenced this pull request Jun 12, 2026
The ":1" pin resolves to a stale frozen 1.x image (the feature has no 1.x
releases anymore — it's at 3.x). That old script runs a global
`pip install docker-compose` on bookworm/arm64, which fails under PEP 668
(externally-managed-environment) — the arm64 prebuild failure that
survived the bookworm pin (#89), the v2-plugin switch (#90), and the
dockerDashComposeVersion=none change (#91), because none of them affect
which feature version runs.

2.x gates the entire compose/pip block behind `!= none`, so with
dockerDashComposeVersion=none there is no pip on arm64 at all. amd64 was
unaffected (it gets a prebuilt v1 binary). `docker compose` v2 still comes
from the moby-compose package.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant