將 IronPDF 加入現有的 Docker 容器

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

IronPDF for .NET Standard 現在完全支持 Docker,包括用於 Linux 和 Windows 的 Azure Docker 容器。

您想將IronPDF部署為單獨的Docker容器嗎? 了解更多有關IronPDF Engine教程指南的信息。

Docker V1 related to 將 IronPDF 加入現有的 Docker 容器
Azure 1 related to 將 IronPDF 加入現有的 Docker 容器
Linux V1 related to 將 IronPDF 加入現有的 Docker 容器
Amazon Web Services V1 related to 將 IronPDF 加入現有的 Docker 容器
Windows Logo V1 related to 將 IronPDF 加入現有的 Docker 容器

為什麼在 Azure 上使用 Docker?

除了出色的企業可擴展性外,Azure上的Docker容器比普通的WebApps享有更多的權限。

這允許渲染SVG字體,因為系統可以使用GDI+圖形。

IronPDF 與 Linux 入門

如果您不熟悉 Docker 與 .NET,我們建議閱讀這篇優秀的文章:設置 Docker 調試並與 Visual Studio 專案整合

我們也強烈建議您閱讀我們的IronPDF Linux 安裝和兼容性指南

推薦的 Linux Docker 發行版

我們推薦以下最新的 64 位元 Linux 操作系統,以便於配置 IronPDF。

  • Ubuntu 22
  • Ubuntu 20
  • Ubuntu 18
  • Debian 11
  • Debian 10 [目前是 Microsoft Azure 的預設 Linux 發行版]
  • CentOS 8
  • Amazon AWS Linux 2 閱讀 IronPDF AWS Lambda 設定指南

    我們建議使用 Microsoft 的.NET 官方 Docker 映像。 其他 Linux 發行版部分支持,但可能需要使用 apt-get 手動配置。 請參閱我們的「Linux 手動設定」指南

    此文件中包含適用於 Ubuntu 和 Debian 的工作 Docker 文件:

IronPDF Linux Docker 安裝基本要素

使用針對 Linux 優化的 NuGet 套件

我們建議使用IronPdf.Linux NuGet 套件,而不是一般的IronPdf 套件,以節省磁碟空間並避免在啟動 Docker 實例時下載資產。 不用擔心,無論是在Windows或macOS上開發,它仍然有效 - 它只是針對Linux優化。

:InstallCmd Install-Package IronPdf.Linux
:InstallCmd Install-Package IronPdf.Linux
SHELL

另一個解決方案是在常規的IronPdf NuGet 套件上簡單地添加IronPdf.Native.Chrome.Linux

:InstallCmd Install-Package IronPdf.Native.Chrome.Linux
:InstallCmd Install-Package IronPdf.Native.Chrome.Linux
SHELL

避免自動安裝依賴性

許多用戶報告說,當 LinuxAndDockerDependenciesAutoConfig 設為 false 時,在 Linux 和 Docker 環境下的結果更好。 那是因為apt-get風格的包管理器已經在您的 Docker 文件中安裝了必要的前提條件。

IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = false;
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = false;
SHELL

禁用 GPU 加速

Linux Docker 容器通常無法訪問 GPU。 GPU 加速預設為停用。 如果您已啟用ChromeGpuModes.Enabled,我們強烈建議您在 Docker 部署中禁用它:

IronPdf.Installation.ChromeGpuMode=IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
IronPdf.Installation.ChromeGpuMode=IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
SHELL

"提前" 初始化

或者,您也可以調用IronPdf.Installation.Initialize()方法來手動啟動IronPDF。 首次使用 IronPDF 的 Docker 實例可能需要一些時間來下載先決條件。 我們可以在創建實例時調用此代碼以避免這種情況:

IronPdf.Installation.Initialize();
IronPdf.Installation.Initialize();
SHELL

Ubuntu Linux DockerFiles

Docker V1 related to Ubuntu Linux DockerFiles
Ubuntu V1 related to Ubuntu Linux DockerFiles

Ubuntu 22 與 .NET 8

Ubuntu 22 搭配 .NET 7

Ubuntu 20 與 .NET 6

Ubuntu 20 搭配 .NET 5

Ubuntu 20 搭配 .NET 3.1 LTS

Ubuntu 18 與 .NET 3.1 LTS

Debian Linux DockerFiles

Docker V1 related to Debian Linux DockerFiles
Debian V1 related to Debian Linux DockerFiles

Debian 12 與 .NET 8

Debian 11 搭配 .NET 7

Debian 11 與 .NET 6

Debian 11 與 .NET 5

Debian 11 與 .NET 3.1 LTS

Debian 10 與 .NET 5

Debian 10 搭配 .NET 3.1 LTS

Alpine Linux Docker檔案

IronPDF 在 Alpine Linux 上不支持運行。 我們希望我們能夠,但我們不能。 坦白說,我們喜歡Alpine,並希望這個項目能持續發展壯大。 截至2023年,Alpine仍然使用過時的“musl”C語言庫,這導致Chromium開發者尚無法完全支持此操作系統。

在 .NET 6 中將 Alpine Docker 與 IronPdfEngine 搭配使用

IronPdf提供一個包含所有IronPdf功能的容器映像。 這使運行在 Alpine 上的項目能夠通過連接到 IronPdfEngine 容器訪問 IronPdf 功能。

步驟1:拉取並運行 IronPdf Engine Docker 映像

在終端機中執行以下命令以拉取並運行 IronPdf Engine Docker 映像:

docker pull ironsoftwareofficial/ironpdfengine
docker pull ironsoftwareofficial/ironpdfengine
SHELL
docker run -d -p 33350:33350 ironsoftwareofficial/ironpdfengine
docker run -d -p 33350:33350 ironsoftwareofficial/ironpdfengine
SHELL

步驟 2:設定控制台應用程序

建立一個針對 .NET 6 的新控制台應用程式。

使用 NuGet 包管理器安裝 IronPdf.Slim NuGet 包。

IronPDF Windows Docker 容器

Docker V1 related to IronPDF Windows Docker 容器
Windows Logo V1 related to IronPDF Windows Docker 容器

Windows Docker 容器在 Azure 上變得越來越受歡迎,因為它們提供更高的性能和可擴展性,並且讓開發者有更多配置實例的權限。

由於可以更高級地訪問圖形庫和虛擬顯卡,IronPDF 在 Azure 上的 Docker 容器(Windows 或 Linux)中將實現更吸引人的文本渲染。

文章「Visual Studio Container Tools for Docker」是一個很棒的入門指南。

這是一個用於 .NET Core 3.1 的範例 Windows 容器 Dockerfile

Windows Server 2019 .NET 6.0

預先配置的 Windows 容器,其中包含運行 IronPdf 所需的所有必要依賴項。

請注意
請注意,這些容器並非用於構建 .NET 應用程序,而是用於運行它們。

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"]
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"]
SHELL

造訪 IronSoftware 在 Docker Hub 的 Docker 資料庫,探索更多預配置的映像以運行 IronPdf。

查克尼思·賓
軟體工程師
Chaknith 致力於 IronXL 和 IronBarcode。他在 C# 和 .NET 方面擁有豐富的專業知識,協助改進軟體並支持客戶。他從用戶互動中獲得的洞察力有助於提高產品、文檔和整體體驗。