Uruchom IronPDF na Linux ARM64 w Dockerze
Renderer IronPDF opiera się na Chromium Embedded Framework (CEF), który potrzebuje więcej miejsca na Thread Local Storage (TLS) niż rezerwuje dynamiczny linker Linuxa domyślnie na ARM i ARM64. Bez obejścia ładowanie libcef.so kończy się niepowodzeniem z cannot allocate memory in static TLS block. Rozwiązaniem jest wcześniejsze załadowanie libcef.so poprzez zmienną środowiskową LD_PRELOAD, aby linker zarezerwował wystarczająco dużo TLS zanim cokolwiek innego zostanie załadowane.
Aby uzyskać wiadomość błędu i rozwiązanie dla systemu nie-Docker, zobacz IronPDF na Linux ARM: nie można przydzielić pamięci w statycznym bloku TLS. Ten artykuł dotyczy tego samego rozwiązania wewnątrz kontenera.
Ustaw LD_PRELOAD w Dockerfile
Dodaj zmienną jako instrukcję ENV wskazującą na natywną bibliotekę ARM64 dostarczaną z IronPDF:
ENV LD_PRELOAD=/app/runtimes/linux-arm64/native/libcef.so
Przykładowy Dockerfile
Ten wieloetapowy Dockerfile buduje i uruchamia aplikację IronPDF na .NET 8 dla ARM64, instaluje natywne biblioteki, od których zależy CEF, oraz ustawia LD_PRELOAD w końcowym obrazie:
# 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"]
Ustaw LD_PRELOAD na ścieżkę, gdzie libcef.so faktycznie znajduje się w Twoim obrazie; powyższa wartość odpowiada domyślnemu układowi runtimes/linux-arm64/native/. Podstawowe ograniczenie jest śledzone na CEF Forum.

