在 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 入门指南

如果您是第一次接触 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 系统上进行开发时均可正常工作。

Install-Package IronXL.Excel

Ubuntu Linux Dockerfiles

Docker Ubuntu

Ubuntu 20 with .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 with .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 with .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 with .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 with .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 with .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 with .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 with .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,您需要使用与 Windows、macOS 和 Linux 兼容的 IronXL NuGet 包。使用命令安装它: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 的 .NET 应用程序,建议使用 Microsoft 官方的 .NET 运行时和 SDK 的 Docker 镜像。这些镜像针对 .NET 应用程序进行优化,可在 Docker Hub 上找到。

如何解决 Docker 环境中 IronXL 的问题?

如果在 Docker 中遇到 IronXL 的问题,请确保所有依赖项在您的 Docker 容器内正确安装。检查 Dockerfile 配置,并确保使用正确的 .NET 版本。参考 IronXL 的文档和 Docker 的官方故障排除指南以获得更多帮助。

有哪些资源可用于了解有关 Docker 和 IronXL 集成的更多信息?

有关 Docker 和 IronXL 集成的更多学习,请参考 Microsoft 关于 Docker 用于 .NET 和 Visual Studio 项目的文档。此外,IronXL 的 Linux 设置指南提供了在 Docker 环境中设置的有价值信息。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 1,738,553 | Version: 2025.11 刚刚发布