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).
12 lines
340 B
Bash
12 lines
340 B
Bash
#!/bin/sh
|
|
set -eu
|
|
# Image and Compose both select www-data; validation and FPM inherit this identity.
|
|
if [ "$1" = "php-fpm" ]; then
|
|
if [ "$(id -u)" = 0 ]; then
|
|
echo 'Refusing to validate or serve FPM as root; use www-data.' >&2
|
|
exit 1
|
|
fi
|
|
php /var/www/html/bin/check-config.php
|
|
fi
|
|
exec docker-php-entrypoint "$@"
|