🚀 Laravel + PHP-FPM (Docker y entorno real)
Esta sección documenta detalladamente cómo se ha instalado y configurado Laravel 11.x junto con PHP-FPM 8.4 dentro del contenedor Docker Alpine y en un entorno manual. Se explica cada paso técnico con claridad, incluyendo comandos reales y el propósito de cada uno, cumpliendo con los criterios de evaluación de la UF2 (Implementación) y UF4 (Documentación).
🧱 1. Preparación del contenedor laravel
📦 Instalación de dependencias
Entramos al contenedor laravel
y ejecutamos:
apk update
apk add --no-cache php84 php84-fpm php84-pdo php84-pdo_mysql php84-mbstring \
php84-tokenizer php84-xml php84-openssl php84-json php84-fileinfo \
php84-curl php84-session nodejs npm nano curl unzip git composer
🧠 Explicación:
php84
: lenguaje PHP versión 8.4.php84-fpm
: demonio que ejecuta scripts PHP como servicio (FastCGI Process Manager).nodejs
ynpm
: necesarios para compilar los assets de Laravel Breeze.nano
,curl
,git
,composer
: herramientas básicas de desarrollo.
📁 2. Creación del proyecto Laravel
Dentro del contenedor, accedemos al directorio base de Laravel y generamos el proyecto:
cd /var/www/html
composer create-project laravel/laravel josue-app
cd josue-app
🔧 Este comando instala Laravel 11.x en el directorio josue-app
, con todas sus dependencias.
🔐 3. Configuración de la base de datos .env
Editamos el archivo .env
para conectar Laravel a MariaDB:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=josue_db
DB_USERNAME=sail
DB_PASSWORD=password
🧠 Explicación:
mysql
: nombre del contenedor del servicio.3306
: puerto por defecto de MariaDB.sail/password
: usuario y contraseña creados anteriormente.
📌 Guarda los cambios con CTRL + O
y luego CTRL + X
.
🛡️ 4. Instalación de Laravel Breeze (Autenticación)
Laravel Breeze nos proporciona un sistema de login y registro funcional:
composer require laravel/breeze --dev
php artisan breeze:install
npm install
npm run build
📦 Esto instalará Breeze, compilará los assets con Vite, y dejará el frontend funcional.
⚙️ 5. Migraciones y permisos
Ejecutamos las migraciones para crear las tablas por defecto:
php artisan migrate

Luego, configuramos permisos correctos para que PHP-FPM acceda a los archivos sin errores de lectura/escritura:
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
🧠 www-data
es el usuario bajo el que se ejecuta PHP-FPM.
🧩 6. Configuración de PHP-FPM
🔧 Crear el socket de ejecución
mkdir -p /run/php
chown -R www-data:www-data /run/php
chmod 755 /run/php
🔌 Este socket es el punto de comunicación entre Nginx y PHP-FPM.
📝 Editar configuración de FPM
Editamos el archivo principal de configuración:
nano /etc/php84/php-fpm.d/www.conf
🔁 Cambiamos las siguientes líneas:
user = www-data
group = www-data
listen = 9000
🧠 Esto indica que el servicio PHP-FPM correrá con el usuario www-data
y escuchará en el puerto 9000
, que es el que Nginx usará para ejecutar scripts PHP.
▶️ 7. Iniciar PHP-FPM
Arrancamos el servicio de forma persistente:
php-fpm84 -D
Verificamos que esté funcionando:
netstat -tuln | grep 9000
🔍 Si ves el puerto 9000
abierto, PHP-FPM está activo.
🧪 9. Comprobación final
Accede a la aplicación desde tu navegador:
http://localhost:8080
Si todo está bien configurado, deberías ver la página de bienvenida de Laravel, servida por Nginx y ejecutada a través del socket PHP-FPM en el contenedor laravel
.
✅ Checklist Evaluación UF2/UF4
Requisito | Cumplido |
---|---|
Laravel 11.x instalado correctamente | ✅ |
Laravel Breeze funcional | ✅ |
Proyecto funcional sin Sail | ✅ |
PHP-FPM configurado en puerto 9000 | ✅ |
Usuario www-data configurado | ✅ |
Laravel funcionando en entorno real | ✅ |
Documentación clara y con capturas | ✅ |