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).
31 lines
1.5 KiB
Bash
31 lines
1.5 KiB
Bash
# Copy to ignored .env and choose a private password before starting.
|
|
COMPOSE_PROJECT_NAME=meshvault-m1
|
|
MESHVAULT_HTTP_HOST=127.0.0.1
|
|
MESHVAULT_HTTP_PORT=8090
|
|
MESHVAULT_DB_NAME=meshvault
|
|
MESHVAULT_DB_USER=meshvault
|
|
MESHVAULT_DB_PASSWORD=
|
|
# Dedicated managed destination only, never an original collection.
|
|
# Host directory must already exist and be writable by container UID/GID 33.
|
|
MESHVAULT_LIBRARY_HOST_DIR=./library
|
|
# Absolute in-container path, outside /var/www/html; keep both paths distinct.
|
|
MESHVAULT_LIBRARY_DIR=/var/lib/meshvault/library
|
|
|
|
# Application configuration (Task2 library; startup/Compose wiring is Task3).
|
|
# Native PHP does NOT load this file: export variables in the shell or pass an
|
|
# explicit string array to AppConfig::fromEnvironment(). Never commit secrets.
|
|
# Defaults apply only when a key is absent; explicitly empty values are invalid.
|
|
# Allowed: development, test, production. Default: production.
|
|
MESHVAULT_ENV=development
|
|
# PSR-3: debug, info, notice, warning, error, critical, alert, emergency. Default: info.
|
|
MESHVAULT_LOG_LEVEL=info
|
|
# Required DB_HOST/DB_NAME/DB_USER/DB_PASSWORD and LIBRARY_DIR have no defaults.
|
|
# DB host/name/user must have no controls or surrounding whitespace.
|
|
# Password is preserved verbatim; blank/whitespace-only or NUL is invalid.
|
|
MESHVAULT_DB_HOST=db
|
|
# Decimal digits 1..65535; default: 5432.
|
|
MESHVAULT_DB_PORT=5432
|
|
# LIBRARY_DIR must be absolute, existing and writable by the actual runtime user.
|
|
# Validation never creates/chmods directories or opens a database connection.
|
|
|