Build Inputs
- Source: Next.js app with TypeScript and Prisma.
- Env:
.env(local), K8s Secretlomavuokraus-web-secretsin cluster. - Prisma schema:
prisma/schema.prisma, migrations inprisma/migrations/.
NPM Scripts
npm run lint→next lintnpm run build→next build(used inside Docker and locally)
Docker Image
- Multi-stage Dockerfile:
- deps: npm ci
- builder: copy source,
npx prisma generate,npm run build - runner: Node 20 bookworm-slim, copy standalone + static
- Tags: numeric (git SHA-derived) +
:latest. - Scan: Trivy runs post-build if available.
Deploy Scripts
deploy/build.sh→ build image, writedeploy/.last-image.deploy/push.sh→ push image.deploy/deploy.sh→ envsubstk8s/app.yaml, kubectl apply, rollout.- Environment wrappers:
deploy/deploy-staging.shdeploy/deploy-prod.sh
Config & Env Vars
- From ConfigMap (public):
NEXT_PUBLIC_SITE_URL,NEXT_PUBLIC_API_BASE,APP_ENV. - From Secret: DB URL, AUTH_SECRET, SMTP, DKIM, etc.
- App env resolution:
process.env.*in Next server code.
Pipeline Diagram
For visuals, edit/export docs/drawio/architecture.drawio or create a dedicated pipeline page in draw.io.