wkhtmltopdf con php:8-fpm-alpine
Tengo un archivo Dockerfile existente php:8-fpm-alpine, y necesito agregar el paquete WKHTMLTOPDF. ¿Es eso posible? Intenté usar el siguiente archivo Dockerfile, pero obtengo el siguiente registro de errores:
Dockerfile…
FROM php:8-fpm-alpine
...
RUN apk add xvfb libfontconfig wkhtmltopdf
error:
ERROR [ 8/13] RUN apk add --no-cache wkhtmltopdf 2.1s
[ 8/13] RUN apk add --no-cache wkhtmltopdf:
12 0.567 fetch https://dl-cdn.alpinelinux.org/alpine/v3.15/main/x86_64/APKINDEX.tar.gz
12 1.097 fetch https://dl-cdn.alpinelinux.org/alpine/v3.15/community/x86_64/APKINDEX.tar.gz
12 2.001 ERROR: unable to select packages:
12 2.034 wkhtmltopdf (no such package):
12 2.034 required by: world[wkhtmltopdf]
executor failed running [/bin/sh -c apk add --no-cache wkhtmltopdf]: exit code: 1
ERROR: Service 'php' failed to build : Build failed
Intenté incluir el contenido del siguiente repositorio, pero creo que es demasiado trabajo para 1 paquete y se rompe durante el proceso de compilación: https://github.com/alloylab/Docker-Alpine-wkhtmltopdf
Cualquier ayuda sería apreciada.
davy.ai
Parece que el paquete
wkhtmltopdf
no está disponible en el repositorio de paquetes de Alpine Linux que está configurado actualmente en su Dockerfile.Una posible solución sería utilizar un repositorio de paquetes diferente que tenga
wkhtmltopdf
disponible para Alpine Linux. El repositorio utilizado en el enlace que proporcionaste es una opción de este tipo. Sin embargo, como mencionaste, ese repositorio implica una cantidad considerable de configuración y mantenimiento adicional.Otra opción sería instalar
wkhtmltopdf
manualmente dentro del contenedor Docker. Una forma de hacer esto sería descargar el binario dewkhtmltopdf
para Alpine Linux desde una fuente externa y luego copiarlo en el contenedor Docker utilizando el comandoCOPY
del Dockerfile. Esto evitaría posibles conflictos con los repositorios de paquetes y te permitiría agregar el paquetewkhtmltopdf
a tu contenedor sin configuración adicional sustancial.Aquí tienes un ejemplo de Dockerfile que utiliza el comando
COPY
para agregarwkhtmltopdf
a una imagen Docker de PHP basada en Alpine Linux:Este Dockerfile utiliza el comando
ADD
para descargar el binario dewkhtmltopdf
desde el repositorio oficial de paquetes y copiarlo en el directorio/tmp
del contenedor Docker. Luego utiliza el comandoapk add
para instalar el paquetewkhtmltox
desde el directorio/tmp
. Finalmente, copia los archivos de tu aplicación en el directorio/var/www/html
y inicia el servicio PHP-FPM.Es importante tener en cuenta que la opción
--allow-untrusted
es requerida al instalar el paquetewkhtmltox
conapk add
porque el paquete no está firmado con la clave de firma predeterminada de Alpine Linux. Esta opción generalmente es segura de usar siempre y cuando obtengas el binario dewkhtmltopdf
desde una fuente confiable.¡Espero que esto te ayude a agregar
wkhtmltopdf
a tu imagen Docker sin demasiada complejidad adicional!