¿Tu aplicación necesita generar algún gráfico usando GD? ¿O tal vez algo más común como parsear un XML?
Muchas de las funciones de bajo nivel de php están disponibles a través de extensiones que probablemente no se encuentren instaladas en tu imagen base.
¿Qué puedes hacer?
Las opciones son varias:
- Buscar una nueva imagen base que sí las tenga instaladas
- Descargar el código fuente, compilar e instalar manualmente las extensiones
- Usar el script que viene con las imágenes oficiales de php
Supongo que la elección es clara, ¿no?
Cómo usar docker-php-ext-install
En general, si usás una imagen basada en alguna de las imágenes oficiales de php, vas a tener acceso a este simpático script.
Para usarlo basta con invocarlo de esta forma:
docker-php-ext-install <EXTENSION>
Por ejemplo, para instalar la extensión zip se puede usar:
docker-php-ext-install zip
Es probable que, en algunas imágenes, esto genere un error debido a la falta de las librerías de base requeridas, en el caso de zip se trata de libzip-dev
.
Para resolver este problema se requiere, previa a la invocación del script docker-php-ext-install
, realizar la instalación correspondiente, por ejemplo usando:
apt install -y libzip-dev
Claro que, si esto se hace dentro de un contenedor en ejecución este cambio será efímero, es decir, si el contendor se destruye habrá que repetir todo el proceso.
Cómo persistir el cambio en la imagen
Lo mejor, si se pretende que el cambio persista más allá de la vida del contenedor en particular, es realizar estos cambios en el Dockerfile.
Algo así como:
FROM php:7.4.33-apache LABEL authors="Mauro Chojrin <mauro.chojrin@leewayweb.com>" RUN apt update && \ apt install -y libzip-dev && \ docker-php-ext-install zip
De esta forma, al realizar un build, la imagen resultante incluirá la extensión que se requiere y, por lo tanto, cualquier contenedor que la utilice también la tendrá disponible.
- Cómo enviarencabezados SOAP desde PHP - 09/12/2024
- Por qué PHP 8 no satisface el requisito ^7.3 de composer - 09/12/2024
- Cómo usar PHPUnit - 03/12/2024