IronPDF auf Linux ARM64 in Docker ausführen
Der Renderer von IronPDF basiert auf dem Chromium Embedded Framework (CEF), das mehr Thread-Local Storage (TLS) benötigt, als der Linux-Dynamik-Loader standardmäßig auf ARM und ARM64 reserviert. Ohne einen Workaround schlägt das Laden von libcef.so mit cannot allocate memory in static TLS block fehl. Die Lösung besteht darin, libcef.so über die LD_PRELOAD-Umgebungsvariable vorzubereiten, damit der Loader genügend TLS reserviert, bevor etwas anderes geladen wird.
Für die nackte Fehlermeldung und die nicht Docker Lösung siehe IronPDF auf Linux ARM: kann den Speicher im statischen TLS-Block nicht zuweisen. Dieser Artikel wendet die gleiche Lösung innerhalb eines Containers an.
LD_PRELOAD in der Dockerfile setzen
Fügen Sie die Variable als ENV-Anweisung hinzu, die auf die ARM64-Native-Bibliothek zeigt, die mit IronPDF geliefert wird:
ENV LD_PRELOAD=/app/runtimes/linux-arm64/native/libcef.so
Beispiel Dockerfile
Diese mehrstufige Dockerfile baut und führt eine IronPDF-App auf .NET 8 für ARM64 aus, installiert die nativen Bibliotheken, von denen CEF abhängt, und setzt LD_PRELOAD im endgültigen Image:
# 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"]
Setzen Sie LD_PRELOAD auf den Pfad, wo libcef.so tatsächlich in Ihrem Image landet; der oben genannte Wert entspricht dem Standard-runtimes/linux-arm64/native/-Layout. Die zugrundeliegende Einschränkung wird im CEF Forum verfolgt.

