在 Docker 容器中設定 IronXL

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

使用 C# 閱讀、編輯及建立 Excel 試算表檔案嗎?

IronXL 現已全面支援 Docker,包括適用於 Linux 和 Windows 的 Azure Docker 容器。

Docker Azure Linux Amazon Windows

為何要使用 Docker?

Docker 讓開發人員能夠輕鬆地將任何應用程式打包、部署並以輕量級、可攜式且自足的容器形式運行,這種容器幾乎可以在任何地方執行。

IronXL 與 Linux Primer

如果您對 Docker 與 .NET 的結合尚不熟悉,我們推薦這篇關於設定 Docker 除錯以及與 Visual Studio 專案整合的精彩文章。 https://docs.microsoft.com/en-us/visualstudio/containers/edit-and-refresh?view=vs-2019

我們也強烈建議您閱讀我們的《IronXL Linux 設定與相容性指南》

推薦的 Linux Docker 發行版

我們建議使用以下最新的 64 位元 Linux 作業系統,以便"輕鬆設定"IronPDF。

  • Ubuntu 20
  • Ubuntu 18
  • Debian 11
  • Debian 10 [目前為 Microsoft Azure 的預設 Linux 發行版]
  • CentOS 7
  • CentOS 8

我們建議使用 Microsoft 的官方 Docker 映像檔。 其他 Linux 發行版部分受支援,但可能需要使用 apt-get 進行手動設定。 請參閱我們的"Linux 手動設定"指南。

本文件中包含適用於 Ubuntu 和 Debian 的可運作 Docker 檔案:

IronXL Linux Docker 安裝要點

使用我們的 NuGet 套件

我們建議使用 IronXL NuGet 套件。 本工具適用於 Windows、macOS 及 Linux 環境下的開發工作。

Install-Package IronXL.Excel

Ubuntu Linux DockerFiles

Docker Ubuntu

Ubuntu 20 搭配 .NET 5

# Base runtime image (Ubuntu 20 with .NET runtime)
FROM mcr.microsoft.com/dotnet/runtime:5.0-focal AS base
WORKDIR /app

# Base development image (Ubuntu 20 with .NET SDK)
FROM mcr.microsoft.com/dotnet/sdk:5.0-focal AS build
WORKDIR /src

# 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
FROM build AS publish
RUN dotnet publish "Example.csproj" -c Release -o /app/publish

# Run app
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Example.dll"]

Ubuntu 20 搭配 .NET 3.1 LTS

# Base runtime image (Ubuntu 20 with .NET runtime)
FROM mcr.microsoft.com/dotnet/runtime:3.1-focal AS base
WORKDIR /app

# Base development image (Ubuntu 20 with .NET SDK)
FROM mcr.microsoft.com/dotnet/sdk:3.1-focal AS build
WORKDIR /src

# 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
FROM build AS publish
RUN dotnet publish "Example.csproj" -c Release -o /app/publish

# Run app
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Example.dll"]

Ubuntu 18 搭配 .NET 3.1 LTS

# Base runtime image (Ubuntu 18 with .NET runtime)
FROM mcr.microsoft.com/dotnet/runtime:3.1-bionic AS base
WORKDIR /app

# Base development image (Ubuntu 18 with .NET SDK)
FROM mcr.microsoft.com/dotnet/sdk:3.1-bionic AS build
WORKDIR /src

# 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
FROM build AS publish
RUN dotnet publish "Example.csproj" -c Release -o /app/publish

# Run app
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Example.dll"]

Debian Linux DockerFiles

搭載 .NET 5 的 Debian 11

# Base runtime image (Debian 10 with .NET runtime)
FROM mcr.microsoft.com/dotnet/aspnet:5.0-bullseye-slim AS base
WORKDIR /app

# Base development image (Debian 10 with .NET SDK)
FROM mcr.microsoft.com/dotnet/sdk:5.0-bullseye-slim AS build
WORKDIR /src

# 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
FROM build AS publish
RUN dotnet publish "Example.csproj" -c Release -o /app/publish

# Run app
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Example.dll"]

搭載 .NET 3.1 LTS 的 Debian 11

# Base runtime image (Debian 10 with .NET runtime)
FROM mcr.microsoft.com/dotnet/aspnet:3.1-bullseye-slim AS base
WORKDIR /app

# Base development image (Debian 10 with .NET SDK)
FROM mcr.microsoft.com/dotnet/sdk:3.1-bullseye-slim AS build
WORKDIR /src

# 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
FROM build AS publish
RUN dotnet publish "Example.csproj" -c Release -o /app/publish

# Run app
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Example.dll"]

搭載 .NET 5 的 Debian 10

# Base runtime image (Debian 10 with .NET runtime)
FROM mcr.microsoft.com/dotnet/runtime:5.0 AS base
WORKDIR /app

# Base development image (Debian 10 with .NET SDK)
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src

# 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
FROM build AS publish
RUN dotnet publish "Example.csproj" -c Release -o /app/publish

# Run app
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Example.dll"]

搭載 .NET 3.1 LTS 的 Debian 10

# Base runtime image (Debian 10 with .NET runtime)
FROM mcr.microsoft.com/dotnet/runtime:3.1 AS base
WORKDIR /app

# Base development image (Debian 10 with .NET SDK)
FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src

# 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
FROM build AS publish
RUN dotnet publish "Example.csproj" -c Release -o /app/publish

# Run app
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Example.dll"]

搭載 .NET 3.1 LTS 的 CentOS 7

# Base runtime image (CentOS 7)
FROM centos:7 AS base
WORKDIR /app

# Install necessary packages
RUN yum install sudo -y
RUN sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
RUN sudo yum install dotnet-sdk-3.1 -y
RUN sudo yum install aspnetcore-runtime-3.1 -y
RUN sudo yum install dotnet-runtime-3.1 -y
RUN sudo yum update -y

WORKDIR /src

# 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
FROM base AS publish
WORKDIR /src
COPY . .
RUN dotnet publish "Example.csproj" -c Release -o /app/publish

# Run app
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Example.dll"]

搭載 .NET 3.1 LTS 的 CentOS 8

# Base runtime image (CentOS 8)
FROM centos:8 AS base
WORKDIR /app

# Install necessary packages
RUN yum install sudo -y
RUN sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
RUN sudo yum install dotnet-sdk-3.1 -y
RUN sudo yum install aspnetcore-runtime-3.1 -y
RUN sudo yum install dotnet-runtime-3.1 -y
RUN sudo yum update -y

WORKDIR /src

# 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
FROM base AS publish
WORKDIR /src
COPY . .
RUN dotnet publish "Example.csproj" -c Release -o /app/publish

# Run app
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Example.dll"]

常見問題

如何在 Docker 容器中設定 IronXL?

若要在 Docker 容器中設定 IronXL,您需要使用 IronXL NuGet 套件,該套件相容於 Windows、macOS 和 Linux。請使用以下指令進行安裝:dotnet add package IronXL。針對 Docker,請將此套件整合至您的 Dockerfile 中,並確保您的應用程式能夠存取必要的函式庫與依賴項。

使用 Docker 開發 Excel 應用程式有哪些好處?

Docker 讓您能夠將 Excel 應用程式打包、部署並以輕量且可攜的容器形式執行,確保在不同環境中保持一致性與效率。這有助於維持穩定且可重現的開發與生產環境。

哪些 Linux 發行版在 Docker 環境中與 IronXL 搭配使用效果最佳?

建議用於在 Docker 中配置 IronXL 的 Linux 發行版包括 Ubuntu 18、Ubuntu 20、Debian 10、Debian 11、CentOS 7 及 CentOS 8。這些發行版為執行 Excel 應用程式的 Docker 容器提供了穩定的執行環境。

我可以在 Windows 和 Linux 的 Docker 容器中同時使用 IronXL 嗎?

是的,IronXL 同時支援 Windows 和 Linux 平台上的 Docker 容器。這包括託管於 Azure 上的容器,提供靈活的部署選項。

對於使用 IronXL 的 .NET 應用程式,建議採用哪些 Docker 映像檔?

對於使用 IronXL for .NET 的應用程式,建議採用 Microsoft 官方提供的 .NET 執行環境與 SDK Docker 映像檔。這些映像檔已針對 .NET 應用程式進行優化,可於 Docker Hub 上取得。

如何在 Docker 環境中排除 IronXL 的問題?

若在 Docker 中遇到 IronXL 的問題,請確認 Docker 容器內所有依賴項均已正確安裝。檢查您的 Dockerfile 配置,並確保使用的是正確的 .NET 版本。如需更多協助,請參閱 IronXL 文件及 Docker 的官方疑難排解指南。

有哪些資源可供進一步了解 Docker 與 IronXL 的整合?

若需進一步了解 Docker 與 IronXL 的整合,請參閱 Microsoft 針對 .NET 和 Visual Studio 專案的 Docker 文件。此外,IronXL for .NET 的 Linux 設定指南也提供了有關建立 Docker 環境的寶貴資訊。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 2,052,917 | 版本: 2026.6 just released
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package IronXL.Excel
執行範例 觀看您的資料變成試算表。