Two-stage build (node:22-slim builder + nginxinc/nginx-unprivileged:alpine runtime) with SPA fallback routing, long-lived cache headers for fingerprinted assets, non-root user (UID 101), and no Node.js toolchain in runtime image (82 MB vs 329 MB+ single-stage). Verified by ui/tests/build/verify_production_image.sh covering build, health, SPA routing, non-root, stdout logging, cache-control headers, SIGTERM exit 0, Node.js absent, secret-free layers, and dep-layer cache hit. 102 integration tests still pass; shellcheck clean. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
12 lines
95 B
Plaintext
12 lines
95 B
Plaintext
.git/
|
|
node_modules/
|
|
dist/
|
|
.angular/
|
|
coverage/
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
*.log
|
|
*.spec.ts
|
|
tests/
|