v2.2.1 — Dockerfile font fixes (unblocks v2.2.0 customer rollout)
Patch — unblocks v2.2.0 customer rollout
v2.2.0's image never built: a font added in PR #166 — fonts-crimson-pro — does not exist in Ubuntu 24.04 noble. Every BuildKit run failed at the apt-install layer:
E: Unable to locate package fonts-crimson-pro
exit code: 100
No atlas:v2.2.0 ever landed in the registry, so customer pods stayed on v2.1.0.
Fix (PR #178)
- Drop
fonts-crimson-profrom apt. - New
scripts/install-google-fonts.sh— data-driven (oneFONTSarray entry per .ttf) — downloads a curated set of Google Fonts as variable .ttf files into/usr/share/fonts/google/and runsfc-cache -f. - Own Docker layer so font changes don't bust the ~2 GB apt+npm+bun+chrome layer.
- Robust:
curl --retry 3 --max-time 60 -f, TTF magic-byte check rejects HTML error pages, idempotent on re-run, usesod(noxxddep).
Fonts shipped (17 families)
apt (unchanged + Ubuntu) — Inter, IBM Plex (Sans / Serif / Mono), JetBrains Mono, Noto + Noto CJK, Ubuntu (new), Liberation, DejaVu.
Google Fonts download (new) — Crimson Pro, Lora, Merriweather, EB Garamond, Playfair Display, Source Serif 4, Roboto, Roboto Flex, Manrope, Work Sans, Raleway, Geist, Fira Sans, Fira Mono, Fira Code, Anton, Lobster.
"Google Sans" is not in
github.com/google/fonts(it's a closed product font). Roboto Flex is Google's own open replacement and ships here instead.
Adding a font is one line in the FONTS array — no Dockerfile churn.
Verified
End-to-end locally: 28 .ttf URLs return 302, all files retrieve cleanly with valid TTF magic, fc-query reads expected family names. The image build itself needs CI (no docker-in-docker in dev container).
Rollout
- CI builds
atlas:v2.2.1 - Flux
ImageUpdateAutomationcommits new digest to the customer manifest (5 min) - Manually delete each customer pod for OnDelete rolling restart