# Multi-stage build for the self-service portal (Angular → nginx). # Build context is the repo root (the app needs the pnpm workspace + libs). See infra/docker-compose.yml. FROM node:24-slim AS build WORKDIR /src RUN corepack enable && corepack prepare pnpm@11.5.2 --activate # Restore first (cached unless the manifests change). COPY package.json pnpm-lock.yaml pnpm-workspace.yaml nx.json tsconfig.base.json eslint.config.mjs ./ RUN pnpm install --frozen-lockfile # Sources (only what the app + its libs need). COPY apps/self-service apps/self-service COPY libs libs RUN pnpm nx build self-service FROM nginx:1.27-alpine AS runtime COPY apps/self-service/nginx.conf /etc/nginx/conf.d/default.conf COPY --from=build /src/dist/apps/self-service/browser /usr/share/nginx/html # Compose-time OIDC config: the browser (Playwright, on the compose network) reaches Keycloak by # service name, so the token issuer matches the BFF's authority (host-consistent, ADR-0010). RUN printf '{ "authority": "http://keycloak:8080/realms/digid" }\n' > /usr/share/nginx/html/config.json EXPOSE 80