refactor(agent-images): use explicit Debian base

This commit is contained in:
2026-07-21 17:40:18 +00:00
committed by didericis
parent 0ff11d8ed7
commit e3258d0683
5 changed files with 55 additions and 29 deletions
@@ -13,16 +13,18 @@ userspace and an OCI container tool without requiring per-project setup.
## Problem
The Claude, Codex, and Pi images inherit the generic `node:22-slim` tag. That
tag does not state which Debian release the project supports and currently
leaves the images on the older Bookworm release. None of the built-in images
installs Podman, so tasks that need to inspect or build OCI images must first
modify the bottle or cannot run at all.
The Claude, Codex, and Pi images inherited the generic `node:22-slim` tag. That
tag did not make Debian the explicit supported base and left the images on the
older Bookworm release. None of the built-in images installed Podman, so tasks
that need to inspect or build OCI images first had to modify the bottle or
could not run at all.
## Goals / success criteria
- Every Dockerfile under `bot_bottle/contrib/*/Dockerfile` explicitly inherits
`node:22-trixie-slim`, based on Debian 13 (the current stable release).
`debian:trixie-slim`, Debian 13 (the current stable release).
- Every image explicitly creates the non-root `node` runtime user with UID and
GID 1000 instead of relying on a language image to provide it.
- Every built-in agent image installs Podman from Debian stable.
- Every built-in agent image retains an SSH client for Git-over-SSH workflows.
- The non-root agent user owns a traversable XDG Git configuration directory,
@@ -39,9 +41,10 @@ modify the bottle or cannot run at all.
## Design
Use the explicit `node:22-trixie-slim` base rather than the floating `slim`
variant. Install the `podman` package with each image's existing `apt-get`
Use the explicit `debian:trixie-slim` base. Install Node.js and npm from Debian
stable where a provider needs them, and create the common `node` runtime user
explicitly. Install the `podman` package with each image's existing `apt-get`
dependency layer, so package metadata and caches are still removed in the same
layer. Treat Debian stable as the Podman stability and update channel; this
keeps the images stdlib/distribution-first and avoids adding a third-party
package repository.
layer. Treat Debian stable as the Node.js and Podman stability and update
channel; this keeps the images distribution-first and avoids adding a
third-party package repository.