scripts/check-3d-budget.mjs misst den three.js-Chunk (Marker WebGLRenderer und __THREE__) mit gzip -9 und bricht den Image-Build ab, wenn er 320 kB übersteigt oder nicht gefunden wird. Heute 299 kB. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
26 lines
904 B
Docker
26 lines
904 B
Docker
# syntax=docker/dockerfile:1
|
|
|
|
# Base-Image per Digest gepinnt, derselbe wie im Backend (siehe dort).
|
|
FROM node:22-alpine@sha256:0a7108bf6c7bf5de370ffb1a3ed6be93d405b43ff159f681a8d18c0e2bc2e402 AS builder
|
|
WORKDIR /app
|
|
COPY package.json package-lock.json ./
|
|
RUN npm ci
|
|
COPY . .
|
|
RUN npx next typegen
|
|
# Qualitaets-Gate: ein Image entsteht nur, wenn Lint, Typecheck und
|
|
# Unit-Tests gruen sind.
|
|
RUN npm run lint && npx tsc --noEmit && npm test
|
|
RUN npm run build
|
|
# Bundle-Budget (Spec Beute-3D §9.9): schlaegt fehl, wenn der 3D-Chunk > 320 kB gzip ist.
|
|
RUN npm run check:3d-budget
|
|
|
|
FROM node:22-alpine@sha256:0a7108bf6c7bf5de370ffb1a3ed6be93d405b43ff159f681a8d18c0e2bc2e402 AS runtime
|
|
ENV NODE_ENV=production
|
|
WORKDIR /app
|
|
COPY --from=builder /app/public ./public
|
|
COPY --from=builder /app/.next/standalone ./
|
|
COPY --from=builder /app/.next/static ./.next/static
|
|
EXPOSE 3000
|
|
USER node
|
|
CMD ["node", "server.js"]
|