Commands /upload_* fell back to 'file not found' because the fixtures directory was never copied into the runtime image.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Stale app.log owned by UID 82 (from previous image) blocked the UID-1000 php-fpm workers from writing. Entrypoint fixes ownership on every start, surviving migrations.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
php-fpm runs workers as www-data, so master stays root and drops to a UID matching host files. storage bind-mount is writable without runtime chmod hacks.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>