refactor: build FROM joakimp/pi-devbox:base-pi-only (Option B)

The pi-only building block now lives in this repo as the internal
base-pi-only tag (produced by opencode-devbox CI from Dockerfile.variant,
INSTALL_OPENCODE=false) instead of opencode-devbox:latest-pi-only — so an
'opencode-devbox' tag never ships without opencode.

- Dockerfile: BASE_IMAGE default joakimp/opencode-devbox:latest-pi-only
  -> joakimp/pi-devbox:base-pi-only.
- Updated README, AGENTS, DOCKER_HUB, docker-compose, CHANGELOG.
- Single source of truth unchanged (opencode-devbox/Dockerfile.variant);
  publish ordering + EXPECTED_PI_VERSION smoke guard unchanged.
This commit is contained in:
pi
2026-06-03 17:04:21 +02:00
parent 1d1283f942
commit 03629cdac7
6 changed files with 60 additions and 39 deletions
+12 -8
View File
@@ -9,10 +9,14 @@ A Docker container with [pi coding-agent](https://github.com/earendil-works/pi)
## What's inside
pi-devbox is a re-brand of the **opencode-devbox `pi-only` variant** — it `FROM`s
`opencode-devbox:latest-pi-only` and adds no layers of its own. Everything below
is inherited from that single source of truth. The pi-only variant is built with
`INSTALL_OPENCODE=false`, so this image is lean and pi-focused — no opencode.
pi-devbox is a thin re-brand of the **`pi-only` build** — it `FROM`s
`joakimp/pi-devbox:base-pi-only` and adds no layers of its own. That base build
is produced by opencode-devbox's CI (from `opencode-devbox/Dockerfile.variant`
with `INSTALL_OPENCODE=false`, the single source of truth for the pi install +
companions) but is published **into this repo** as the internal building-block
tag `base-pi-only`*not* under opencode-devbox, so an "opencode-devbox" tag
never ships without opencode. Everything below is inherited from that build,
which is lean and pi-focused — no opencode.
Base tooling:
@@ -208,7 +212,7 @@ Tags follow the pi npm package version: `v0.74.0`, `v0.75.0`, … `latest` alway
Container-level rebuilds on the same pi version (security updates, base bumps, fixes) get a letter suffix: `v0.74.0b`, `v0.74.0c`, …
The pi binary is inherited from `opencode-devbox:latest-pi-only`, so a release of this image must be preceded by an opencode-devbox release that bakes the target pi version into `latest-pi-only`. The smoke test enforces this (it asserts `pi --version` matches the tag).
The pi binary is inherited from `joakimp/pi-devbox:base-pi-only`, so a release of this image must be preceded by an opencode-devbox release that bakes the target pi version into `base-pi-only`. The smoke test enforces this (it asserts `pi --version` matches the tag).
---
@@ -221,9 +225,9 @@ the base. To pin a specific pi-only build or hack on it:
git clone https://gitea.jordbo.se/joakimp/pi-devbox
cd pi-devbox
# Default tracks latest-pi-only; override BASE_IMAGE to pin a build:
# Default tracks base-pi-only; override BASE_IMAGE to pin a build:
docker compose build \
--build-arg BASE_IMAGE=joakimp/opencode-devbox:v1.15.13-pi-only
--build-arg BASE_IMAGE=joakimp/pi-devbox:base-pi-only-v1.15.13c
docker compose up -d
```
@@ -236,7 +240,7 @@ Build args supported:
| Arg | Default | Effect |
|---|---|---|
| `BASE_IMAGE` | `joakimp/opencode-devbox:latest-pi-only` | Parent image — set to a `:vX.Y.Z-pi-only` tag or a digest for reproducible builds |
| `BASE_IMAGE` | `joakimp/pi-devbox:base-pi-only` | Parent image (internal building-block tag) — set to a `:base-pi-only-vX.Y.Z` tag or a digest for reproducible builds |
---