es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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 de wkhtmltopdf para Alpine Linux desde una fuente externa y luego copiarlo en el contenedor Docker utilizando el comando COPY del Dockerfile. Esto evitaría posibles conflictos con los repositorios de paquetes y te permitiría agregar el paquete wkhtmltopdf a tu contenedor sin configuración adicional sustancial.

    Aquí tienes un ejemplo de Dockerfile que utiliza el comando COPY para agregar wkhtmltopdf a una imagen Docker de PHP basada en Alpine Linux:

    FROM php:8-fpm-alpine
    
    # Descarga el binario de wkhtmltopdf y cópialo en el contenedor
    ADD https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.alpine3.12_amd64.apk /tmp/wkhtmltox.apk
    RUN apk add --allow-untrusted /tmp/wkhtmltox.apk
    
    # Instala otros paquetes o dependencias necesarios para tu aplicación
    RUN apk add --no-cache <otros_paquetes>
    
    # Configura tu aplicación
    COPY <archivos_de_tu_aplicacion> /var/www/html
    
    # Inicia el servicio PHP-FPM
    CMD ["php-fpm"]
    

    Este Dockerfile utiliza el comando ADD para descargar el binario de wkhtmltopdf desde el repositorio oficial de paquetes y copiarlo en el directorio /tmp del contenedor Docker. Luego utiliza el comando apk add para instalar el paquete wkhtmltox 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 paquete wkhtmltox con apk 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 de wkhtmltopdf desde una fuente confiable.

    ¡Espero que esto te ayude a agregar wkhtmltopdf a tu imagen Docker sin demasiada complejidad adicional!

Comments are closed.