devcontainer: skip legacy docker-compose in docker-in-docker#91
Conversation
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>
|
Warning Review limit reached
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 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 configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
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>
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 legacydocker-compose(hyphen) command. On bookworm/arm64 that goes through a globalpip install docker-compose, which fails under PEP 668:amd64 keeps passing because it gets a prebuilt Compose-v1 binary (no pip).
Why
noneis safedocker composev2 —runtime/docker/compose.gostates "legacydocker-composeis not supported" and execs the v2 plugin.moby-composeapt package, installed independently of this option (already succeeded in the devcontainer: use Compose v2 in docker-in-docker #90 run).noneis gated cleanly (if [ "$DOCKER_DASH_COMPOSE_VERSION" != "none" ]) and simply skips the hyphen command + its pip path.Status of the prebuild chain
:latestmanifest publish.Only verifiable by the
DevContainer Prebuildrun onmainafter merge.🤖 Generated with Claude Code