Ir al contenido

Laravel

Laravel es un framework PHP, no un runtime con imagen propia. No existe un equivalente directo de node:26-alpine: la base es una imagen PHP (CLI o PHP-FPM según tu arquitectura).

  • Qué base PHP elegir y por qué PHP-FPM no es un reverse proxy.
  • Qué versión de PHP exige Laravel 13 y por qué verificarla.
  • Por qué USER www-data no es una regla universal.
  • El patrón de caché de Composer y el problema de vendor/ del host.

Laravel 13 requiere PHP 8.3 o superior; verifica el rango soportado antes de publicar. PHP-FPM procesa PHP, pero no sirve tráfico público por sí solo: necesita un servidor web como Nginx delante. No confundas FPM con un proxy.

Dockerfile
FROM php:8.3-fpm-alpine
WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader
COPY . .

Los manifiestos (composer.json, composer.lock) se copian antes que el código para conservar la caché, igual que con Node. La instalación de producción excluye paquetes de desarrollo: no deben formar parte de la imagen runtime.

Revisa qué usuario ejecuta FPM en tu imagen, qué rutas deben ser escribibles (storage, cache) y quién debe poseerlas. Ajusta propiedad y usuario a tu caso.

Tratar PHP-FPM como servidor público completo y publicar su puerto como si fuera Nginx. FPM escucha un protocolo de aplicación, no HTTP público: el tráfico entra por el servidor web y FPM procesa detrás.

Continúa con Seguridad para ordenar privilegio mínimo, secretos, puertos e imágenes confiables en un solo criterio.