Introduces a self-contained Docker build under docker/ that boots the
full Laravel + Vite + Reverb + Horizon + scheduler stack inside a
single container.
The Dockerfile exposes two targets sharing a common system-base layer
(PHP 8.4-FPM Alpine + Postgres/Redis/intl/sockets/redis extensions):
- dev: bind-mount source at runtime, runs Vite via supervisord, hot
reloads PHP via opcache.validate_timestamps=1, UID/GID build args
align container writes with the host user.
- production: ships the prebuilt application — composer --no-dev,
npm run build + build:ssr, wayfinder TS pre-generated, OpCache
hardened, fixed UID 1000.
Sidecar configs (nginx, php.{dev,prod}.ini, supervisord.{dev,prod}.conf,
entrypoint, postgres-init for the test DB) live next to the Dockerfile
so the build context is self-describing. The entrypoint is idempotent
and handles APP_KEY generation, migrations, storage:link, Passport
keys, Wayfinder regen, and dependency reinstall on every boot.
20 lines
527 B
INI
20 lines
527 B
INI
; TryPost — PHP settings for production.
|
|
memory_limit = 256M
|
|
upload_max_filesize = 100M
|
|
post_max_size = 100M
|
|
max_execution_time = 60
|
|
max_input_vars = 5000
|
|
|
|
; OpCache hardened for production: no timestamp checks, larger interned-string buffer.
|
|
opcache.enable = 1
|
|
opcache.memory_consumption = 192
|
|
opcache.max_accelerated_files = 20000
|
|
opcache.validate_timestamps = 0
|
|
opcache.interned_strings_buffer = 16
|
|
|
|
; Security
|
|
expose_php = Off
|
|
display_errors = Off
|
|
display_startup_errors = Off
|
|
log_errors = On
|
|
error_log = /proc/self/fd/2
|