Karte 807: Basis-Image des gemeinsamen Runtime-Images auf Digest pinnen - #68
Merged
Conversation
FROM eclipse-temurin:25.0.3_9-jre-alpine ist trotz vollstaendiger Versionsnummer ein beweglicher Tag. Nachgemessen: der lokal vorliegende Stand des Tags ist der Index sha256:c707c0d1..., in der Registry steht heute sha256:28db6fdf..., und c707c0d1 kommt in 28db6fdf nicht als Plattform-Manifest vor — zwei verschiedene Inhalte unter demselben Tag. Dieses Image ist die Basis JEDER Plaintext-App: 16 laufende Container auf dem NAS benutzen plaintext-runtime:jre25 (alle auf Image-Id 0ba0e1ad1402). Bis hierher war der Bau nicht reproduzierbar; die Layer des laufenden Images stimmen mit keinem heute greifbaren Stand des Basis-Tags ueberein. Gepinnt wird der Multi-Arch-Index (enthaelt linux/amd64), damit --platform linux/amd64 in build-runtime.sh unveraendert funktioniert. Geprueft am echten Bau: Positivkontrolle docker build --platform linux/amd64 -> Successfully built Negativkontrolle erfundener Digest -> manifest unknown Funktionsprobe java 25.0.3+9, bash + wget vorhanden, uid=1000(appuser) Kein Neubau und kein Rollout: die Aenderung wirkt beim naechsten, von Hand gestarteten build-runtime.sh.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Was
runtime/Dockerfile:FROM eclipse-temurin:25.0.3_9-jre-alpine→…@sha256:28db6fdf60e3…, Tag bleibt als Lesehilfe stehen. Plus ein Kommentarblock mit Messung, Grund und Rueckweg.Warum — der Tag traegt eine Version und ist trotzdem beweglich
sha256:c707c0d18cb9…sha256:28db6fdf60e3…Gegenprobe, dass das nicht bloss zwei Digest-Ebenen desselben Bildes sind:
c707c0d1ist selbst ein Index (application/vnd.oci.image.index.v1+json) und kommt in den vier Plattform-Manifesten von28db6fdfnicht vor.Dritte Messung: die Layer des laufenden
plaintext-runtime:jre25(gebaut 27.06.2026) stimmen mit den 6 Layern des lokal vorliegenden Basis-Images nicht ueberein — der Stand, aus dem das heute laufende Runtime-Image entstand, ist nicht mehr identifizierbar.Dieses Image ist die Basis jeder Plaintext-App: 16 laufende Container auf dem NAS (
plaintext-{app,guild,iot,schuetu}-{int,prod}-{blue,green}), alle auf Image-Id0ba0e1ad1402.Beleg am echten Bau
Die Negativkontrolle ist der Punkt: sie zeigt, dass der Pin tatsaechlich greift und nicht still ignoriert wird. Die Funktionsprobe deckt den
HEALTHCHECKab, derwgetbraucht.Die Probeimages sind wieder entfernt.
Wirkung und Rueckweg
Die Aenderung loest keinen Bau und keinen Rollout aus.
runtime/build-runtime.shwird von Hand gestartet; erst dort wirkt der Pin. Der naechste Bau liefert dann ein Runtime-Image auf neuerer Basis als das heute laufende — das waere ohne Pin genauso, nur unbemerkt und nicht wiederholbar.Rueckweg:
@sha256:…streichen. Aktualisieren: neuen Index-Digest ermitteln und ersetzen.Kein Deploy
ci-cd-pipeline.yamliston: workflow_call(kein Push-Trigger),namespace-lint.yamlist ein Lint. Ein Merge hier rollt nichts aus — Deploy-Slot 413 ist nicht noetig.Was das NICHT loest
Die eigenen Images (
plaintext-runtime,plaintext-website,plaintext-fwtool,volvo-login-automation,plaintext-kalenderimport) haben weiterhin keineRepoDigests— sie werden perdocker save | ssh | docker loadverteilt, und dieser Weg uebertraegt keine Digests. Der Weg dorthin fuehrt ueber GHCR und ist derzeit blockiert: der NAS bekommt aufdocker manifest inspect ghcr.io/plaintext-gmbh/…als rootdenied(beide Pakete sind privat, anonym HTTP 403) — siehe Karte 775. Analyse, Optionen und Empfehlung stehen vollstaendig in Karte 807.