Ajouter IronPDF à un conteneur Docker existant
IronPDF for .NET Standard prend désormais entièrement en charge Docker, notamment les conteneurs Azure Docker pour Linux et Windows.
Souhaitez-vous plutôt déployer IronPDF en tant que conteneur Docker distinct ? En savoir plus surle guide des tutoriels du moteur IronPDF.





Pourquoi utiliser Docker sur Azure ?
Outre l'excellente évolutivité de l'entreprise, les conteneurs Docker sur Azure bénéficient de plus de permissions que les WebApps ordinaires.
Cela permet le rendu des polices SVG, car l'accès du système aux graphiques GDI+ est activé.
IronPDF et Linux Primer
Si Docker avec .NET est nouveau pour vous, nous vous recommandons cet excellent article sur mise en place du débogage Docker et de l'intégration avec les projets Visual Studio.
Nous vous recommandons également de lire notreGuide d'installation et de compatibilité d'IronPDF Linux
Distributions Linux Docker recommandées
Nous recommandons les derniers systèmes d'exploitation Linux 64 bits ci-dessous pour une "configuration facile" d'IronPDF.
- Ubuntu 22
- Ubuntu 20
- Ubuntu 18
- Debian 11
- Debian 10 [Actuellement, la distribution Linux par défaut de Microsoft Azure]
- CentOS 8
Amazon AWS Linux 2Lire le guide d'installation d'IronPDF sur AWS Lambda
Nous recommandons d'utiliser le logicielImages Docker officielles pour .NET . Les autres distributions Linux sont partiellement prises en charge, mais peuvent nécessiter une configuration manuelle à l'aide d'apt-get. Voir notre "Configuration manuelle de Linux"Guide de l'utilisateur
Des fichiers Docker fonctionnels pour Ubuntu et Debian sont inclus dans ce document :
IronPDF Linux Docker Installation Essentials (en anglais)
Utiliser des paquets NuGet optimisés pour Linux
Nous recommandons d'utiliser leIronPdf.Linux NuGet Package au lieu de l'habituelIronPDF Package pour économiser de l'espace disque et éviter que les actifs soient téléchargés lorsque vous démarrez votre instance Docker. Ne vous inquiétez pas, il fonctionne toujours lorsque vous développez sous Windows ou macOS - il est simplement optimisé pour Linux.
Install-Package IronPdf.Linux
Une autre solution consiste à ajouter simplementIronPdf.Native.Chrome.Linux en plus du travail régulierIronPDF Paquet NuGet.
Install-Package IronPdf.Native.Chrome.Linux
Éviter l'installation automatique de dépendances
De nombreux utilisateurs rapportent de meilleurs résultats avec Linux et Docker lorsque LinuxAndDockerDependenciesAutoConfig
est réglé sur false. En effet, les prérequis sont déjà installés par les gestionnaires de paquets de type apt-get dans vos fichiers Docker.
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = false;
Désactiver l'accélération du GPU
Les conteneurs Linux Docker n'ont souvent pas accès à un GPU. L'accélération GPU est désactivée par défaut. Si vous avez activé ChromeGpuModes.Enabled, nous vous recommandons vivement de le désactiver pour les déploiements Docker :
IronPdf.Installation.ChromeGpuMode=IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
"Initialisation "anticipée
En option, vous pouvez également appeler la fonction IronPdf.Installation.Initialize()
méthode pour démarrer manuellement IronPDF. La toute première fois qu'une instance Docker utilise IronPDF, le téléchargement des prérequis peut prendre un certain temps. Nous pouvons éviter ce scénario en appelant ce code lors de la création de l'instance :
IronPdf.Installation.Initialize();
Ubuntu Linux DockerFiles


Ubuntu 22 avec .NET 8
# base image (Ubuntu 22) | |
FROM mcr.microsoft.com/dotnet/runtime:8.0-jammy | |
USER root | |
WORKDIR /app | |
# install necessary packages | |
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 | |
# restore NuGet packages | |
ARG BUILD_CONFIGURATION=Release | |
WORKDIR /src | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "./Example/./Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "./Example.csproj" -c $BUILD_CONFIGURATION -o /app/build | |
# publish project | |
RUN dotnet publish "./Example.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false | |
WORKDIR /app/publish | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Ubuntu 22 avec .NET 7
# base image (Ubuntu 22) | |
FROM mcr.microsoft.com/dotnet/sdk:7.0-jammy | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y sudo libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libxrender1 libfontconfig1 libxshmfence1 libxkbcommon-dev libgdiplus | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Ubuntu 20 avec .NET 6
# base image (Ubuntu 20) | |
FROM mcr.microsoft.com/dotnet/sdk:6.0-focal | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libappindicator3-1 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Ubuntu 20 avec .NET 5
# base image (Ubuntu 20) | |
FROM mcr.microsoft.com/dotnet/sdk:5.0-focal | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libappindicator3-1 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Ubuntu 20 avec .NET 3.1 LTS
# base image (Ubuntu 20) | |
FROM mcr.microsoft.com/dotnet/sdk:3.1-focal | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libappindicator3-1 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Ubuntu 18 avec .NET 3.1 LTS
# base image (Ubuntu 18) | |
FROM mcr.microsoft.com/dotnet/sdk:3.1-bionic | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libappindicator3-1 libxrender1 libfontconfig1 libxshmfence-dev libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Debian Linux DockerFiles


Debian 12 avec .NET 8
# base image (Debian 12) | |
FROM mcr.microsoft.com/dotnet/sdk:8.0 | |
USER root | |
WORKDIR /app | |
# install necessary packages | |
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 | |
# restore NuGet packages | |
ARG BUILD_CONFIGURATION=Release | |
WORKDIR /src | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "./Example/./Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "./Example.csproj" -c $BUILD_CONFIGURATION -o /app/build | |
# publish project | |
RUN dotnet publish "./Example.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false | |
WORKDIR /app/publish | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Debian 11 avec .NET 7
# base image (Debian 11) | |
FROM mcr.microsoft.com/dotnet/sdk:7.0 | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y sudo libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libdrm-common libgbm1 libasound2 libxrender1 libfontconfig1 libxshmfence1 libxkbcommon-dev libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Debian 11 avec .NET 6
# base image (Debian 11) | |
FROM mcr.microsoft.com/dotnet/sdk:6.0 | |
WORKDIR /src | |
# install necessary packages | |
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 | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Debian 11 avec .NET 5
# base image (Debian 11) | |
FROM mcr.microsoft.com/dotnet/sdk:5.0-bullseye-slim | |
WORKDIR /src | |
# install necessary packages | |
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 | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Debian 11 avec .NET 3.1 LTS
# base image (Debian 11) | |
FROM mcr.microsoft.com/dotnet/sdk:3.1-bullseye | |
WORKDIR /src | |
# install necessary packages | |
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 | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Debian 10 avec .NET 5
# base image (Debian 10) | |
FROM mcr.microsoft.com/dotnet/sdk:5.0 | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libappindicator3-1 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Debian 10 avec .NET 3.1 LTS
# base image (Debian 10) | |
FROM mcr.microsoft.com/dotnet/sdk:3.1 | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libappindicator3-1 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Alpine Linux DockerFiles
L'exécution d'IronPDF sur Alpine Linux n'est pas prise en charge. Nous aimerions pouvoir le faire, mais nous ne le pouvons pas. Franchement, nous aimons Alpine et nous espérons que ce projet se poursuivra et se développera. En 2023, C# utilise encore des bibliothèques de langage C "musl" obsolètes qui ne permettent pas encore aux développeurs de Chromium de prendre pleinement en charge cet OS.
Utiliser Alpine Docker avec IronPdfEngine dans .NET 6
IronPdf fournit une image conteneur contenant toutes les fonctionnalités d'IronPdf. Cela permet aux projets fonctionnant sur IronPDF d'accéder aux fonctionnalités d'IronPdf en se connectant à un conteneur IronPdfEngine.
Étape 1 : Tirer et exécuter l'image Docker du moteur IronPDF
Exécutez les commandes suivantes dans votre terminal pour tirer et exécuter l'image Docker du moteur IronPDF :
docker pull ironsoftwareofficial/ironpdfengine
docker run -d -p 33350:33350 ironsoftwareofficial/ironpdfengine
Étape 2 : Configuration de l'application Console
Créez une nouvelle application console ciblant .NET 6.
Installez le package NuGet IronPdf.Slim à l'aide du gestionnaire de packages NuGet.
IronPDF Conteneurs Docker pour Windows


Les conteneurs Windows Docker sont de plus en plus populaires sur Azure, car ils offrent des niveaux de performance et d'évolutivité plus élevés, et donnent aux développeurs plus de permissions pour configurer les instances.
IronPDF effectuera effectivement un rendu de texte plus attrayant au sein d'un conteneur Docker(Windows ou Linux) sur Azure en raison des niveaux d'accès plus élevés à la bibliothèque graphique et à la carte graphique virtuelle.
L'article 'Outils Visual Studio Container pour Dockerest un excellent guide de démarrage.
Voici un exemple de fichier Docker de conteneur Windows pour .NET Core 3.1
# escape=` | |
FROM mcr.microsoft.com/windows/servercore:ltsc2016 AS baseOS | |
RUN powershell -Command [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; $ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -UseBasicParsing -Uri https://dot.net/v1/dotnet-install.ps1 -OutFile dotnet-install.ps1; ./dotnet-install.ps1 -InstallDir '/Program Files/dotnet' -Channel 3.1 -Runtime dotnet; Remove-Item -Force dotnet-install.ps1 && setx /M PATH "%PATH%;C:\Program Files\dotnet" | |
COPY . . | |
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base |
Windows Server 2019 .NET 6.0
Conteneurs Windows préconfigurés comprenant toutes les dépendances nécessaires à l'exécution d'IronPDF.
A noter
FROM mcr.microsoft.com/dotnet/sdk:6.0-windowsservercore-ltsc2019 AS build
WORKDIR /src
COPY ["nuget.config", "."]
COPY ["ConsoleApp/ConsoleApp.csproj", "ConsoleApp/"]
RUN dotnet restore "ConsoleApp/ConsoleApp.csproj"
COPY . .
WORKDIR "/src/ConsoleApp"
RUN dotnet build "ConsoleApp.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "ConsoleApp.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM ironsoftwareofficial/windows:2019-net60
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ConsoleApp.dll"]
Visitez le siteDépôt Docker d'IronSoftware sur Docker Hub pour découvrir d'autres images préconfigurées pour l'exécution d'IronPDF.