Dockerfile para PHP-FPM: crear tu propia imagen de PHP con Composer
Hola, bienvenido. Un Dockerfile es la receta con la que Docker construye una imagen propia: para PHP-FPM, parte de la imagen oficial php:8.5-fpm-alpine, le añade las extensiones que necesita tu aplicación y Composer, y copia tu código dentro. El resultado es una imagen con todo lo necesario para ejecutar la aplicación, igual en tu máquina que en la de cualquier compañero.
Hasta ahora hemos usado imágenes de otros, y en esta lección por fin vamos a hacer la nuestra. Primero vamos a crear tasks, la aplicación PHP de partida del curso, y después su Dockerfile, para terminar construyendo la imagen y comprobando que lleva lo que esperamos.
La aplicación de partida
tasks es un gestor de tareas mínimo y sin framework: se conecta a MySQL con PDO y lista las tareas de una tabla, nada más. Es pequeño a propósito, porque lo que nos interesa en el curso es el stack que lo rodea y no la aplicación. Si te interesa construir una aplicación PHP de verdad sobre este mismo stack, en la lección siguiente te dejo el curso que lo hace.
Estos archivos los vamos a crear, pero no los vamos a ejecutar en tu máquina. No tienes PHP instalado ni te hace falta: PHP, Composer y las extensiones van a vivir en la imagen que construyamos.
Crea una carpeta para el curso y, dentro, la carpeta tasks. Todo lo que hagamos en esta primera sección va dentro de tasks. Empezamos por el composer.json, que solo lleva el autoload PSR-4 para que las clases de src/ se carguen solas con el espacio de nombres App:
La conexión a la base de datos va en una clase Database. Lee la configuración de las variables de entorno, con los mismos nombres que usa Laravel (DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME y DB_PASSWORD), porque así, cuando lleguemos a Sail, los reconocerás en su .env:
Si una variable no está definida, se usa un valor por defecto, y el de DB_HOST es 127.0.0.1, algo que va a salir en las próximas lecciones. Y si la conexión falla, la aplicación no se queda en blanco: devuelve un 500 con el mensaje de error de PDO, que es justo lo que vas a necesitar leer cuando algo no conecte.
Por último, public/index.php, que carga el autoload de Composer, pide las tareas y las escribe en texto plano:
- 02Qué es PHP-FPM
- 03El Dockerfile
- 04Construir la imagen
- 05Comprobar la imagen
¿Ya lo habías pedido o entras desde otro dispositivo? Escribe el mismo email: recuperas tu acceso y tu avance.
Al entrar desde el enlace te apuntamos a los avisos de cursos gratuitos. Te das de baja cuando quieras.
¿Ya tienes cuenta? Entra