Multiplatform (amd64+arm64) wird nicht gebraucht - der Container laeuft ausschliesslich
auf dem Linux-Server. Damit entfaellt das Zusammenfuehren per buildx imagetools; :latest
wird wieder schlicht per docker tag/push gesetzt.
Ausserdem:
- Login nur noch, wenn keine Zugangsdaten hinterlegt sind (Skript laeuft sonst nicht durch).
- Schlusshinweis korrigiert: auf dem Server gilt /opt/stacks/myapp (compose.yml), und der
Pull muss als rxf laufen - root hat keine Registry-Credentials und wuerde stillschweigend
das alte lokale Image weiterverwenden.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Schutzabfrage: package.json-Name muss zum IMAGE_NAME passen. Verhindert, dass ein
aus einem anderen Projekt kopiertes deploy.sh unter fremdem Namen pusht - genau so
landete ein tabletten-Build unter spritzschema:202603151025.
- Build je Architektur einzeln ueber den Standard-Builder (Rosetta) statt ueber den
docker-container-Builder: dort scheitert der emulierte amd64-Build reproduzierbar am
apt-get ("invalid signature", qemu-Bug). Zusammenfuehrung per buildx imagetools.
- Kopierter Kommentar "Deploy Script fuer laufschrift" korrigiert.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Das runner-Stage uebernimmt node_modules aus dem deps-Stage (npm ci --omit=dev),
enthaelt also kein TypeScript. Next.js konnte die next.config.ts deshalb zur
Laufzeit nicht transpilieren und brach beim Start ab ("Failed to transpile
next.config.ts"). Die Config setzt nur turbopack.root, was fuer `next start`
ohnehin irrelevant ist - daher gleichwertig als CommonJS-JS-Datei.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>