Exécuter IronPDF sur Linux ARM64 dans Docker
Le moteur de rendu d'IronPDF est construit sur le Chromium Embedded Framework (CEF), qui nécessite plus de Thread Local Storage (TLS) que le lieur dynamique Linux ne réserve par défaut sur ARM et ARM64. Sans solution de contournement, le chargement de libcef.so échoue avec cannot allocate memory in static TLS block. La solution consiste à précharger libcef.so via la variable d'environnement LD_PRELOAD afin que le lieur réserve suffisamment de TLS avant que quoi que ce soit d'autre ne se charge.
Pour le message d'erreur brut et la solution non-Docker, voir IronPDF sur Linux ARM : impossible d'allouer de la mémoire dans le bloc TLS statique. Cet article applique la même solution dans un conteneur.
Définissez LD_PRELOAD dans le Dockerfile
Ajoutez la variable comme une instruction ENV pointant vers la bibliothèque native ARM64 fournie avec IronPDF :
ENV LD_PRELOAD=/app/runtimes/linux-arm64/native/libcef.so
Exemple de Dockerfile
Ce Dockerfile multi-étapes construit et exécute une application IronPDF sur .NET 8 pour ARM64, installe les bibliothèques natives dont dépend CEF, et définit LD_PRELOAD dans l'image finale :
# 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"]
Définissez LD_PRELOAD sur le chemin où libcef.so se trouve réellement dans votre image ; la valeur ci-dessus correspond à la disposition par défaut de runtimes/linux-arm64/native/. La limitation sous-jacente est suivie sur le forum CEF.

