devcontainer: use Compose v2 in docker-in-docker#90
Conversation
The docker-in-docker feature defaults to Compose v1, which has no arm64 standalone binary and falls back to `pip install docker-compose` — that now fails on bookworm under PEP 668 (externally-managed-environment), so the arm64 prebuild broke (amd64 passed because the v1 binary exists). Pin dockerDashComposeVersion to v2, the `docker compose` CLI plugin the integration suite already uses. v1 is EOL regardless. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Warning Review limit reached
More reviews will be available in 1 hour, 49 minutes, and 39 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
After #89, the prebuild got much further — amd64 succeeded, but arm64 failed installing the
docker-in-dockerfeature:The feature defaults to Compose v1 (
dockerDashComposeVersion: v1). There's no Compose-v1 standalone binary for arm64, so it falls back topip install docker-compose, which now fails on bookworm under PEP 668. amd64 passed because the v1 binary exists there.This pins the feature to v2 — the
docker composeCLI plugin that the integration suite (test/integration,ci.yml) already uses. Compose v1 is EOL anyway.Verification
Only validatable by the
DevContainer Prebuildrun onmainafter merge (the image builds nowhere else). amd64 already builds clean; this unblocks arm64 so the multi-arch:latestmanifest can finally publish.🤖 Generated with Claude Code