- Mueve la ruta /storage/{path} fuera del middleware de auth para que
sea pública; necesario para que los servidores de WhatsApp y el navegador
puedan cargar imágenes de promociones sin autenticación
- Dockerfile: agrega 'rm -rf public/storage' antes de storage:link para
evitar que COPY copie la junction de Windows y deje el symlink roto en el contenedor
- Crea .dockerignore: excluye public/storage, .git, .env y artefactos de
build del contexto de Docker para builds más limpios y seguros
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Pass upload_max_filesize=50M and post_max_size=55M directly with -d
flags on every php process in supervisord. This is guaranteed to apply
regardless of ini scanning order or Docker layer caching.
Also move COPY docker/php.ini before COPY . . so the conf.d file is
always placed before the app code is copied, ensuring Docker does not
use a stale cached layer that skips the ini file.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Use printf instead of echo to correctly write php.ini with newlines
(Alpine ash echo does not interpret \n, leaving the file malformed
and PHP falling back to its 2MB default)
- Add nginx.conf with client_max_body_size 25M as front-end proxy
- Start nginx on port 8080 via supervisord; move artisan serve to
internal port 8081 so nginx can proxy requests with proper limits
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>