25e910d030
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
59 lines
2.3 KiB
Markdown
59 lines
2.3 KiB
Markdown
---
|
|
phase: 03-pages-ship
|
|
plan: 04
|
|
subsystem: infrastructure-cleanup
|
|
tags: [dockerfile, docker, ssr, ga4, legacy-cleanup, traefik]
|
|
dependency_graph:
|
|
requires: [03-02-PLAN, 03-03-PLAN]
|
|
provides: [ssr-dockerfile, docker-compose-traefik, clean-repo]
|
|
affects: []
|
|
tech_stack:
|
|
added: []
|
|
patterns: [multi-stage Dockerfile node:22-alpine, .output SSR deploy, Traefik port 3000]
|
|
key_files:
|
|
created:
|
|
- .dockerignore
|
|
modified:
|
|
- Dockerfile
|
|
- docker-compose.yml
|
|
decisions:
|
|
- "Dockerfile uses node:22-alpine for both build and runtime stages (no nginx)"
|
|
- "SMTP and GA4 env vars injected via docker-compose environment section"
|
|
- "Formation page not redirected — returns 404 naturally per D-19"
|
|
- "GA4 nuxt-gtag config already correct from Plan 01 — no changes needed"
|
|
metrics:
|
|
duration: 59s
|
|
completed: 2026-04-08
|
|
tasks: 2
|
|
files: 169
|
|
---
|
|
|
|
# Phase 03 Plan 04: Dockerfile SSR + GA4 + Legacy Cleanup Summary
|
|
|
|
Multi-stage Dockerfile rewritten from nginx/dist to node:22-alpine build+runtime copying .output/ with node server, docker-compose Traefik port updated 80->3000 with SMTP/GA4 env vars, 166 legacy SPA files deleted (src/, old/, nginx.conf, index.html, eslint.config.ts, env.d.ts).
|
|
|
|
## Task Results
|
|
|
|
| Task | Name | Commit | Key Files |
|
|
|------|------|--------|-----------|
|
|
| 1 | Dockerfile SSR multi-stage + docker-compose Traefik port 3000 | 39749c6 | Dockerfile, .dockerignore, docker-compose.yml |
|
|
| 2 | GA4 production-only + legacy cleanup | 081ed03 | 166 files deleted (src/, old/, nginx.conf, index.html, eslint.config.ts, env.d.ts) |
|
|
|
|
## Deviations from Plan
|
|
|
|
None - plan executed exactly as written.
|
|
|
|
## Verification
|
|
|
|
- Dockerfile uses node:22-alpine in 2 stages, copies .output/, CMD node /app/.output/server/index.mjs
|
|
- .dockerignore excludes node_modules, .nuxt, .output, src, .git, .planning
|
|
- docker-compose.yml loadbalancer.server.port=3000
|
|
- docker-compose.yml has NUXT_SMTP_HOST/USER/PASS/TO and NUXT_PUBLIC_GTAG_ID env vars (${VAR} references, no hardcoded secrets)
|
|
- nuxt-gtag enabled only in production (import.meta.env.NODE_ENV === 'production')
|
|
- runtimeConfig.public.gtag.id present for runtime injection
|
|
- No app/pages/formation.vue exists — /formation returns 404
|
|
- src/ directory completely removed
|
|
- old/, nginx.conf, index.html, eslint.config.ts, env.d.ts removed
|
|
|
|
## Self-Check: PASSED
|