build: Build-Zeit-Platzhalter-Env in builder-Stage (next build)
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) <noreply@anthropic.com>
This commit is contained in:
12
Dockerfile
12
Dockerfile
@@ -24,6 +24,18 @@ RUN npm install --no-audit --no-fund
|
|||||||
FROM node:${NODE_VERSION}-alpine AS builder
|
FROM node:${NODE_VERSION}-alpine AS builder
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
ENV NEXT_TELEMETRY_DISABLED=1
|
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 --from=deps /app/node_modules ./node_modules
|
||||||
COPY . .
|
COPY . .
|
||||||
# next.config.ts setzt output:"standalone" -> erzeugt .next/standalone/server.js.
|
# next.config.ts setzt output:"standalone" -> erzeugt .next/standalone/server.js.
|
||||||
|
|||||||
Reference in New Issue
Block a user