Uruchom IronPDF na Linux ARM64 w Dockerze

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

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.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 20,296,129 | Wersja: 2026.7 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPdf
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.