Run IronPDF on Linux ARM64 in Docker

This article was translated from English: Does it need improvement?
Translated
View the article in English

El renderizador de IronPDF está construido sobre el Chromium Embedded Framework (CEF), que necesita más Thread Local Storage (TLS) de lo que el enlazador dinámico de Linux reserva por defecto en ARM y ARM64. Sin una solución, cargar libcef.so falla con cannot allocate memory in static TLS block. La solución es precargar libcef.so a través de la variable de entorno LD_PRELOAD para que el enlazador reserve suficiente TLS antes de que cualquier otra cosa cargue.

Para el mensaje de error puro y la solución no Docker, consulta IronPDF en Linux ARM: no puede asignar memoria en el bloque de TLS estático. Este artículo aplica la misma solución dentro de un contenedor.

Establece LD_PRELOAD en el Dockerfile

Agregue la variable como una instrucción ENV apuntando a la biblioteca nativa ARM64 que se envía con IronPDF:

ENV LD_PRELOAD=/app/runtimes/linux-arm64/native/libcef.so

Dockerfile de Ejemplo

Este Dockerfile de múltiples etapas construye y ejecuta una aplicación de IronPDF en .NET 8 para ARM64, instala las bibliotecas nativas de las que depende CEF, y establece LD_PRELOAD en la imagen final:

# Base image for runtime (ARM64)
FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base
USER root
WORKDIR /app
RUN apt update \
    && apt install -y sudo libxkbcommon-x11-0 libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev
# Base image for build (ARM64)
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app/publish
# Final image with IronPdf and system dependencies
FROM base AS final
WORKDIR /app
ENV LD_PRELOAD=/app/runtimes/linux-arm64/native/libcef.so
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "IronPdfLinuxArm.dll"]

Establezca LD_PRELOAD en la ruta donde libcef.so realmente se encuentra en su imagen; el valor anterior coincide con el diseño predeterminado de runtimes/linux-arm64/native/. La limitación subyacente se sigue en el Foro de CEF.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 20,296,129 | Versión: 2026.7 recién publicada
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronPdf
ejecutar una muestra Mira cómo tu HTML se convierte en PDF.