Konfigurowanie IronXL w kontenerach Docker
Chcesz odczytywać, edytować i tworzyć pliki arkuszy kalkulacyjnych Excel za pomocą C#?
IronXL teraz w pełni obsługuje Docker, w tym Azure Docker Containers dla Linuksa i Windows.
Dlaczego warto korzystać z Docker?
Docker umożliwia programistom łatwe pakowanie, dostarczanie i uruchamianie dowolnej aplikacji jako lekkiego, przenośnego i samowystarczalnego kontenera, który może działać praktycznie wszędzie.
IronXL i Linux - wprowadzenie
Jeśli Docker z .NET jest dla Ciebie nowością, polecamy doskonały artykuł o konfigurowaniu debugowania Docker i integracji z projektami Visual Studio. https://docs.microsoft.com/en-us/visualstudio/containers/edit-and-refresh?view=vs-2019
Zdecydowanie polecamy również przeczytanie naszego Przewodnika po instalacji i zgodności IronXL na Linux
Zalecane dystrybucje Linux Docker
Zalecamy najnowsze 64-bitowe systemy Linux, wymienione poniżej, dla 'łatwej konfiguracji' IronPDF.
- Ubuntu 20
- Ubuntu 18
- Debian 11
- Debian 10 [Obecnie domyślna dystrybucja Linux Microsoft Azure]
- CentOS 7
- CentOS 8
Polecamy użycie Oficjalnych Obrazów Docker Microsoft. Inne dystrybucje Linux są częściowo wspierane, ale mogą wymagać ręcznej konfiguracji przy użyciu apt-get. Zobacz nasz przewodnik "Linux Manual Setup".
Działające pliki Docker dla Ubuntu i Debian są zawarte w tym dokumencie:
Podstawy instalacji Docker IronXL dla Linux
Skorzystaj z naszego pakietu NuGet
Zalecamy użycie pakietu NuGet IronXL. Działa podczas tworzenia aplikacji na Windows, macOS i Linux.
Pliki Docker dla Linux Ubuntu
Ubuntu 20 z .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 z .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 z .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"]
Pliki Docker dla Debian Linux
Debian 11 z .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 z .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 z .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 z .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 z .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 z .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"]
Często Zadawane Pytania
Jak skonfigurować IronXL w kontenerze Docker?
Aby skonfigurować IronXL w kontenerze Docker, należy użyć pakietu IronXL NuGet, który jest kompatybilny z systemami Windows, macOS i Linux. Należy go zainstalować za pomocą polecenia: dotnet add package IronXL. W przypadku Docker należy zintegrować pakiet w pliku Dockerfile i upewnić się, że aplikacja ma dostęp do niezbędnych bibliotek i zależności.
Jakie są zalety korzystania z Docker w aplikacjach Excel?
Docker pozwala pakować, dostarczać i uruchamiać aplikacje Excel jako lekkie, przenośne kontenery, zapewniając spójność i wydajność w różnych środowiskach. Pomaga to w utrzymaniu stabilnego i powtarzalnego środowiska programistycznego i produkcyjnego.
Które dystrybucje Linuksa najlepiej współpracują z IronXL w Dockerze?
Dystrybucje Linuksa zalecane do konfiguracji IronXL w Dockerze to Ubuntu 18, Ubuntu 20, Debian 10, Debian 11, CentOS 7 i CentOS 8. Dystrybucje te zapewniają stabilne środowisko dla kontenerów Docker uruchamiających aplikacje Excel.
Czy mogę używać IronXL zarówno w kontenerach Docker dla systemu Windows, jak i Linux?
Tak, IronXL obsługuje kontenery Docker zarówno na platformach Windows, jak i Linux. Obejmuje to kontenery hostowane na platformie Azure, co zapewnia elastyczne opcje wdrażania.
Jakie obrazy Docker są zalecane dla aplikacji .NET korzystających z IronXL?
W przypadku aplikacji .NET korzystających z IronXL for .NET zaleca się użycie oficjalnych obrazów Docker firmy Microsoft dla środowiska uruchomieniowego .NET i zestawu SDK. Obrazy te są zoptymalizowane pod kątem aplikacji .NET i można je znaleźć na platformie Docker Hub.
Jak mogę rozwiązać problemy z IronXL w środowisku Docker?
Jeśli napotkasz problemy z IronXL w Dockerze, upewnij się, że wszystkie zależności są poprawnie zainstalowane w kontenerze Docker. Sprawdź konfigurację pliku Dockerfile i upewnij się, że używana jest właściwa wersja .NET. Aby uzyskać dodatkową pomoc, zapoznaj się z dokumentacją IronXL oraz oficjalnymi przewodnikami Docker dotyczącymi rozwiązywania problemów.
Jakie zasoby są dostępne, aby dowiedzieć się więcej o integracji Docker i IronXL?
Aby dowiedzieć się więcej na temat integracji Docker i IronXL, zapoznaj się z dokumentacją Microsoftu dotyczącą Docker dla projektów .NET i Visual Studio. Ponadto przewodnik konfiguracji IronXL dla systemu Linux zawiera cenne informacje dotyczące konfiguracji środowisk 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 posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.