Implements MeshVault M1 (issues #6–11): - Four-service Docker Compose stack (nginx, PHP-FPM 8.3, PostgreSQL 17, Node assets) - Slim 4 + PHP-DI routing with escaped PHP views and production/dev error handling - Immutable validated AppConfig with redacted diagnostics - JSON stdout Monolog logging with job-scoped context - Tailwind CSS v4 deterministic locked builds with template scanning - POSIX and PowerShell dev wrappers (up/down/test/lint/assets/watch) - Startup config validation fails before FPM serves as unprivileged www-data - migrate/seed explicitly unavailable until M2 (#12); #10 remains open Verified via clean-start acceptance on remote host (keith@192.168.2.23).
8 lines
204 B
Docker
8 lines
204 B
Docker
FROM node:24-bookworm-slim
|
|
WORKDIR /workspace
|
|
COPY --chown=node:node package.json package-lock.json ./
|
|
RUN chown node:node /workspace
|
|
USER node
|
|
RUN npm ci --no-audit --no-fund
|
|
CMD ["npm", "run", "build"]
|