* fix(docker): use node:22-trixie-slim instead of non-existent noble-slim * docs(adr): update ADR-030 for trixie-slim base image * docs(handoff): update handoff for trixie-slim and add watch out note * docs(handoff): set PR number * docs(handoff): add handoff for PR#73 * fix(ci): drop dangling ADR-031 ref in pr-73 handoff * docs(adr): add ADR-031 for PR#73 trixie-slim base image --------- Co-authored-by: opencode-agent <agent@opencode.local>
3.6 KiB
ADR-031 (PR #73): Fix Docker base image — node:22-noble-slim → node:22-trixie-slim
Статус
Accepted (2026-07-26)
Контекст
ADR-030 (PR #71) зафиксировал переход base image на Debian trixie ради glibc ≥ 2.39 для @mathew-cf/rag-cli. Но PR#71 указал FROM node:22-noble-slim — тег, не существующий в Docker Hub:
- Проверка через Docker Hub API:
count=0дляnode:22-noble-slim. - Официальные образы
nodeбазируются только на Debian, не Ubuntu. Тегов*-noble-slimв официальном репоlibrary/nodeнет вообще. - При пересборке Dockerfile падает:
failed to resolve source metadata for docker.io/library/node:22-noble-slim: not found.
Результат: PR#71 не собирается. Нужен реальный тег с glibc ≥ 2.39 (требование @mathew-cf/rag-cli, см. ADR-024 / ADR-030) и Node 22 LTS. PR#73 — fix follow-up к PR#71.
Решение
FROM node:22-trixie-slim
node:22-trixie-slim— реальный тег, проверен через Docker Hub API (count>0).- Debian 13 trixie → glibc 2.41 ≥ 2.39 — удовлетворяет требованию
@mathew-cf/rag-cli. - Node 22 LTS — совпадает с каналом PR#71, без мажорного обновления.
- Однострочное изменение в
Dockerfile, остальное без правок. - Дополнительно: Debian 13 не использует snap → chromium ставится через
apt-get install -y chromiumкак обычный пакет, реальный browser, не transitional wrapper. Puppeteer-интеграция (PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium) работает as-is. На Ubuntu noble chromium — snap-пакет, что создавало known limitation; Debian trixie эту проблему снимает.
Альтернативы
-
node:lts-trixie-slim(Node 24 LTS) — отклонено: мажорное обновление Node 22→24. Установленные npm-пакеты (opencode-ai, repomix,@mathew-cf/opencode-memory) тестировались на Node 22 LTS; Node 24 не валидирован, риск несовместимости. -
node:trixie-slim(latest = Node 26) — отклонено: latest-тег = не LTS. Для production-образа требуется long-term support; latest дополнительно не pinned → drifting risk приdocker build. -
node:22.23.1-trixie-slim(pinned) — отклонено: избыточная детализация для публичного репо. Pin патч-версии Node усложняет обслуживание (ручной bump) без выгоды;node:22-trixie-slimуже даёт детерминированный major+distro. -
debian:trixie-slim+ Node вручную (NodeSource или nvm) — отклонено: сложнее, больше правок в Dockerfile (apt node = старая версия, нужен NodeSource apt-репозиторий или download tarball).node:22-trixie-slimуже включает Node 22 LTS — нулевая настройка. -
cargo install rag-cliиз исходников — отклонено: +500MB Rust toolchain (rustc, cargo, crates.io deps), +10 мин build на каждомdocker build, +image size. Смена base image — 0 дополнительных MB, готовый prebuilt binary работает as-is.