From 5d4afb593697bf8f96c96aba73b8e90550757d75 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 10 Jun 2026 13:34:06 +0200 Subject: [PATCH] build: Build-Zeit-Platzhalter-Env in builder-Stage (next build) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit next build evaluiert beim 'Collecting page data' Server-Routen (u. a. /api/auth/[...nextauth]); src/lib/env.ts validiert beim Import (Fail-Fast) und brach ohne gesetzte Variablen ab. Platzhalter-Env (erfüllt das Zod-Schema) nur für den Build ergänzt — Server-env wird nicht ins Bundle inlined, die builder- Stage landet nicht im Runtime-Image; echte Werte kommen zur Laufzeit aus Compose. Lokal verifiziert: next build läuft mit den Platzhaltern sauber durch (alle Routen). Co-Authored-By: Claude Opus 4.8 (1M context) --- Dockerfile | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Dockerfile b/Dockerfile index cac9243..7e89c65 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,6 +24,18 @@ RUN npm install --no-audit --no-fund FROM node:${NODE_VERSION}-alpine AS builder WORKDIR /app ENV NEXT_TELEMETRY_DISABLED=1 +# Build-Zeit-Platzhalter: src/lib/env.ts validiert beim Import (Fail-Fast). +# `next build` evaluiert beim "Collecting page data" die Server-Routen (u. a. +# /api/auth/[...nextauth]) -> ohne gesetzte Variablen bricht der Import ab. +# Diese Werte sind NUR für den Build (erfüllen das Zod-Schema); Server-env wird +# NICHT ins Bundle inlined und die builder-Stage landet NICHT im Runtime-Image. +# Echte Werte kommen zur Laufzeit aus docker-compose. +ENV DATABASE_URL=postgresql://build:build@localhost:5432/build \ + AUTH_SECRET=build_only_placeholder_secret_min_32_chars_long \ + AUTH_URL=https://build.invalid \ + AUTHENTIK_ISSUER=https://build.invalid/application/o/floriannetz/ \ + AUTHENTIK_CLIENT_ID=build \ + AUTHENTIK_CLIENT_SECRET=build COPY --from=deps /app/node_modules ./node_modules COPY . . # next.config.ts setzt output:"standalone" -> erzeugt .next/standalone/server.js.