21 lines
1.2 KiB
Markdown
21 lines
1.2 KiB
Markdown
# 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).
|