Configurando IronXL em Contêineres Docker
Quer Ler, editar e criar arquivos de planilha Excel Usando C#?
O IronXL agora suporta totalmente Docker, incluindo Contêineres Docker Azure para Linux e Windows.
Por que usar Docker?
Docker permite que os desenvolvedores empacotem, enviem e executem facilmente qualquer aplicação como um contêiner leve, portátil e autossuficiente, que pode ser executado virtualmente em qualquer lugar.
IronXL e Linux Primer
Se o Docker com .NET é novo para você, recomendamos este excelente artigo sobre como configurar a depuração e integração do Docker com projetos do Visual Studio. https://docs.microsoft.com/en-us/visualstudio/containers/edit-and-refresh?view=vs-2019
Também recomendamos muito que leia nosso Guia de Configuração e Compatibilidade do IronXL para Linux
Distribuições Linux recomendadas para Docker
Recomendamos os sistemas operacionais Linux de 64 bits mais recentes listados abaixo para uma "configuração fácil" do IronPDF.
- Ubuntu 20
- Ubuntu 18
- Debian 11
- Debian 10 [Atualmente o padrão Linux do Microsoft Azure]
- CentOS 7
- CentOS 8
Recomendamos usar as Imagens Docker Oficiais da Microsoft. Outras distribuições Linux são suportadas parcialmente, mas podem exigir configuração manual usando apt-get. Veja nosso guia "Configuração Manual do Linux".
Arquivos Docker funcionais para Ubuntu e Debian estão incluídos neste documento:
Essenciais da Instalação do Docker do IronXL no Linux
Use Nosso Pacote NuGet
Recomendamos usar o Pacote NuGet IronXL. Ele funciona ao desenvolver no Windows, macOS e Linux.
Files Docker do Ubuntu Linux
Ubuntu 20 com .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 com .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 com .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"]
DockerFiles para Debian Linux
Debian 11 com .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 com .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 com .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 com .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 com .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 com .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"]
Perguntas frequentes
Como posso configurar o IronXL em um contêiner Docker?
Para configurar o IronXL em um contêiner Docker, você precisa usar o pacote NuGet IronXL, compatível com Windows, macOS e Linux. Instale-o usando o comando: dotnet add package IronXL . Para Docker, integre o pacote ao seu Dockerfile e certifique-se de que seu aplicativo possa acessar as bibliotecas e dependências necessárias.
Quais são os benefícios de usar o Docker para aplicações em Excel?
O Docker permite empacotar, distribuir e executar aplicativos do Excel como contêineres leves e portáteis, garantindo consistência e eficiência em diferentes ambientes. Isso ajuda a manter um ambiente de desenvolvimento e produção estável e reproduzível.
Quais distribuições Linux funcionam melhor com o IronXL no Docker?
As distribuições Linux recomendadas para configurar o IronXL no Docker são Ubuntu 18, Ubuntu 20, Debian 10, Debian 11, CentOS 7 e CentOS 8. Essas distribuições fornecem um ambiente estável para contêineres Docker que executam aplicativos do Excel.
Posso usar o IronXL em contêineres Docker tanto para Windows quanto para Linux?
Sim, o IronXL oferece suporte a contêineres Docker em plataformas Windows e Linux. Isso inclui contêineres hospedados no Azure, permitindo opções de implantação flexíveis.
Quais imagens Docker são recomendadas para aplicações .NET que utilizam o IronXL?
Para aplicações .NET que utilizam IronXL, recomenda-se o uso das imagens Docker oficiais da Microsoft para o runtime e SDK do .NET. Essas imagens são otimizadas para aplicações .NET e podem ser encontradas no Docker Hub.
Como posso solucionar problemas com o IronXL em um ambiente Docker?
Se você encontrar problemas com o IronXL no Docker, verifique se todas as dependências estão instaladas corretamente no seu contêiner Docker. Confira a configuração do seu Dockerfile e certifique-se de que a versão correta do .NET está sendo usada. Consulte a documentação do IronXL e os guias de solução de problemas oficiais do Docker para obter mais ajuda.
Quais recursos estão disponíveis para aprender mais sobre a integração do Docker e do IronXL?
Para obter mais informações sobre a integração do Docker e do IronXL, consulte a documentação da Microsoft sobre Docker para projetos .NET e Visual Studio. Além disso, o guia de configuração do IronXL para Linux fornece informações valiosas para configurar ambientes 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 é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.