1.2 KiB
1.2 KiB
EVIDENCE — FAS 8 · Container icke-root
Analys av
Dockerfile(fil:Dockerfile, VERIFIERAT genom läsning 2026-08-10).
Krav → bevis
| Krav | Bevis i Dockerfile |
|---|---|
| Multi-stage | FROM node:24-alpine AS builder (rad 20) + FROM node:24-alpine AS runtime (rad 45) |
| Icke-root runtime | USER node (rad 63) — körs som icke-root node-användare; .next chownad node:node (rad 58) så cache-skrivning fungerar |
| Ingen tsx i prod | CMD ["node_modules/.bin/next", "start"] (rad 71) — ingen tsx/ts-node/tsc i runtime-stage |
| Healthcheck | HEALTHCHECK ... CMD wget -qO- http://127.0.0.1:3000/api/health (rad 67–68) — wget installerat i runtime (rad 53) |
| Inga hemligheter i image | .dockerignore exkluderar .env* (utom .env.example), .git, **/__pycache__ (VERIFIERAT, .dockerignore rad 14–16, 23) |
| Repro/CI-paritet | node:24-alpine; pnpm@9 corepack-pinned — matchar lokal node v24.14.0 / pnpm 9.15.9 (VERIFIERAT) |
Notering
Bygget körs med pnpm --ignore-workspace (workaround för v0-pnpm-workspace.yaml)
— samma flagga som lokala grindar använder. Ingen tsx-in-prod-mönster någonstans
i Dockerfile-sökvägen (grep: inga träffar på tsx i Dockerfile).