chore(infra): Docker-Backend-Image von unnoetigen Dateien befreien #266

Closed
opened 2026-07-08 18:27:56 +02:00 by niboer · 0 comments
Owner

Aktuelles Verhalten

Das backend/Dockerfile (Multi-Stage-Build) kopiert im Runner-Stage:

  • node_modules/ aus dem Builder mit allen devDependencies (483 MB)
  • prisma/ komplett mit seed.ts und schema.prisma (nur migrations/ wird zur Laufzeit benoetigt)

Optimierungsvorschlaege

1. node_modules mit --omit=dev neu installieren

Statt COPY --from=builder /app/node_modules ./node_modules im Runner:

FROM node:24-alpine AS builder
# ... unveraendert ...

FROM node:24-alpine AS runner
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/package.json /app/prisma.config.ts ./
RUN npm ci --omit=dev --ignore-scripts
COPY --from=builder /app/prisma ./prisma
COPY openapi.yaml ./

Erwartete Einsparung: ~300 MB (Entfernung von TypeScript, ESLint, Prettier, Vitest, etc.)

2. Nur prisma/migrations/ kopieren

seed.ts und schema.prisma werden zur Laufzeit nicht benoetigt. Stattdessen nur:

COPY --from=builder /app/prisma/migrations ./prisma/migrations

Gemessene Werte

  • Groesse node_modules/ im aktuellen Image: 483 MB
  • prisma/ enthaelt unnoetig: seed.ts, schema.prisma

Akzeptanzkriterien

  • Image-Groesse nach Optimierung messbar geringer
  • npm run test:build (Lint + Build + Tests) laeuft weiterhin
  • Integrationstest (E2E) via docker compose funktioniert
  • prisma migrate deploy im CMD funktioniert (nur migrations/noetig)
## Aktuelles Verhalten Das `backend/Dockerfile` (Multi-Stage-Build) kopiert im Runner-Stage: - `node_modules/` aus dem Builder **mit allen devDependencies** (483 MB) - `prisma/` komplett mit `seed.ts` und `schema.prisma` (nur `migrations/` wird zur Laufzeit benoetigt) ## Optimierungsvorschlaege ### 1. `node_modules` mit `--omit=dev` neu installieren Statt `COPY --from=builder /app/node_modules ./node_modules` im Runner: ```dockerfile FROM node:24-alpine AS builder # ... unveraendert ... FROM node:24-alpine AS runner COPY --from=builder /app/dist ./dist COPY --from=builder /app/package.json /app/prisma.config.ts ./ RUN npm ci --omit=dev --ignore-scripts COPY --from=builder /app/prisma ./prisma COPY openapi.yaml ./ ``` Erwartete Einsparung: **~300 MB** (Entfernung von TypeScript, ESLint, Prettier, Vitest, etc.) ### 2. Nur `prisma/migrations/` kopieren `seed.ts` und `schema.prisma` werden zur Laufzeit nicht benoetigt. Stattdessen nur: ```dockerfile COPY --from=builder /app/prisma/migrations ./prisma/migrations ``` ## Gemessene Werte - Groesse `node_modules/` im aktuellen Image: **483 MB** - `prisma/` enthaelt unnoetig: `seed.ts`, `schema.prisma` ## Akzeptanzkriterien - [ ] Image-Groesse nach Optimierung messbar geringer - [ ] `npm run test:build` (Lint + Build + Tests) laeuft weiterhin - [ ] Integrationstest (E2E) via `docker compose` funktioniert - [ ] `prisma migrate deploy` im CMD funktioniert (nur migrations/noetig)
Sign in to join this conversation.
No description provided.