Executar IronPDF em Linux ARM64 no Docker

Curtis Chau
Curtis Chau
Updated: 29 de junho de 2026

O renderizador do IronPDF é baseado no Chromium Embedded Framework (CEF), que necessita de mais Thread Local Storage (TLS) do que o linker dinâmico do Linux reserva por padrão em ARM e ARM64. Sem uma solução, carregar libcef.so falha com cannot allocate memory in static TLS block. A correção é pré-carregar libcef.so através da variável de ambiente LD_PRELOAD para que o linker reserve TLS suficiente antes que qualquer outra coisa seja carregada.

Para a mensagem de erro pura e a correção não-Docker, veja IronPDF no Linux ARM: não é possível alocar memória no bloco TLS estático. Este artigo aplica a mesma correção dentro de um contêiner.

Definir LD_PRELOAD no Dockerfile

Adicione a variável como uma instrução ENV apontando para a biblioteca nativa ARM64 que acompanha o IronPDF:

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

Dockerfile de exemplo

Este Dockerfile de múltiplos estágios compila e executa um app do IronPDF no .NET 8 para ARM64, instala as bibliotecas nativas das quais o CEF depende e configura LD_PRELOAD na imagem 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"]
Dockerfile

Defina LD_PRELOAD para o caminho onde libcef.so realmente cai na sua imagem; o valor acima corresponde ao layout padrão runtimes/linux-arm64/native/. A limitação subjacente é rastreada no Fórum CEF.

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

Leia mais

Pronto para começar?

Nuget Downloads 21,916,531Versão:2026.11recém-lançado