在 Docker 容器中設定 IronXL
想使用 C# 讀取、編輯和建立 Excel 電子表格檔案嗎?
IronXL 現在完全支援 Docker,包括適用於 Linux 和 Windows 的 Azure Docker 容器。
為什麼要使用 Docker?
Docker 使開發人員能夠輕鬆地將任何應用程式打包、交付和運行為輕量級、可移植、自包含的容器,該容器幾乎可以在任何地方運行。
IronXL 和 Linux 入門指南
如果您是第一次接觸 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
我們建議使用微軟官方的 Docker 映像。 其他 Linux 發行版部分支持,但可能需要使用 apt-get 手動配置。 請參閱我們的"Linux 手動設置"指南。
本文件中包含適用於 Ubuntu 和 Debian 的 Docker 檔案:
IronXL Linux Docker 安裝要點
使用我們的 NuGet 套件
我們建議使用IronXL NuGet 套件。 它在 Windows、macOS 和 Linux 系統上進行開發時均可正常運作。
Ubuntu Linux Dockerfiles
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
Debian 11 及 .NET 5
# 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"]
Debian 11 及 .NET 3.1 LTS
# 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"]
Debian 10 和 .NET 5
# 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"]
Debian 10 及 .NET 3.1 LTS
# 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"]
CentOS 7 搭配 .NET 3.1 LTS
# 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"]
CentOS 8 搭配 .NET 3.1 LTS
# 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?
建議使用Ubuntu 18、Ubuntu 20、Debian 10、Debian 11、CentOS 7和CentOS 8這些Linux發行版在Docker中配置IronXL。這些發行版為在容器中運行Excel應用程式提供了一個穩定的環境。
我可以在Windows和Linux的Docker容器中使用IronXL嗎?
是的,IronXL支持在Windows和Linux平台的Docker容器中運行。這包括在Azure上託管的容器,允許靈活的部署選項。
.NET應用程式使用IronXL時推薦使用哪些Docker映像?
對於使用IronXL的.NET應用程式,建議使用Microsoft的官方Docker映像作為.NET運行時和SDK的基礎影像。這些映像已為.NET應用程式進行了優化,可以在Docker Hub上找到。
我該如何排除Docker環境中IronXL的問題?
如果在Docker中遇到IronXL的問題,請確保所有相依性在Docker容器內正確安裝。檢查您的Dockerfile配置,確保使用正確的.NET版本。參閱IronXL檔案和Docker的官方故障排除指南以獲得更多幫助。
有哪些資源可用於學習更多關於Docker與IronXL整合的知識?
若要進一步學習Docker和IronXL的整合,可參閱Microsoft有關於.NET和Visual Studio專案的Docker文件。此外,IronXL的Linux設置指南提供有關於設置Docker環境的寶貴資訊。
Can IronXL be used in a Red Hat environment with Docker?
Yes, IronXL can be used in Docker containers running on RHEL (Red Hat Enterprise Linux) using Red Hat's Universal Base Image (UBI) for .NET 8. This allows deployments without needing a Red Hat subscription, ensuring compatibility with current .NET releases.
What should I do if I face issues with other Linux distributions using IronXL in Docker?
If you encounter issues with other Linux distributions, you may need to configure them manually using `apt-get`. Refer to the IronXL Linux Manual Setup guide for detailed steps.
Where can I find more resources for setting up IronXL in Docker with .NET?
You can find additional resources in the IronXL Linux Setup and Compatibility Guide, and by exploring articles about Docker debugging and Visual Studio integration provided as recommendations on the web page.

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。