Hoe om te Hardloop Aspose.Words In Docker
Mikroservices, in samewerking met containerisering maak dit moontlik om tegnologieë maklik te kombineer. Docker laat jou toe om Aspose.Words funksionaliteit maklik in jou aansoek te integreer, ongeag watter tegnologie in jou ontwikkelingstapel is.
As jy mikroservices teiken, of as die hooftegnologie in jou stapel nie .NET, C++ of Java is nie, maar jy het Aspose.Words funksionaliteit nodig, of as jy Reeds Docker in jou stapel gebruik, dan sal jy dalk belangstel om Aspose.Words in’n Docker-houer te gebruik.
Voorwaardes
-
Docker moet op jou stelsel geïnstalleer word. Vir inligting oor hoe Om Docker op Windows of Mac te installeer, verwys na die skakels in die afdeling “Sien ook”.
-
Let ook daarop dat Visual Studio 2017, .NET Core 2.2 SDK word in die voorbeeld hieronder gebruik.
Hallo Wêreld Aansoek
In hierdie voorbeeld, jy skep’n eenvoudige Hello World console aansoek wat’n “Hello World!“dokument en stoor dit in alle ondersteun stoor formate. Die aansoek kan dan gebou word en uitgevoer word in Docker.
Skep Die Konsole-Toepassing
Volg die onderstaande stappe om Die Hello World-program te skep:
- Sodra Docker geïnstalleer is, maak seker dat dit Linux Houers gebruik (verstek). Kies indien nodig Die Opsie Switch to Linux containers in die Docker Desktops-kieslys.
- In Visual Studio, skep’n .NET Core konsole aansoek.
- Installeer die nuutste Aspose.Words weergawe van NuGet. SkiaSharp sal geïnstalleer word as’n afhanklikheid van Aspose.Words.
- Aangesien die aansoek op Linux uitgevoer sal word, moet die toepaslike inheemse Linux bates geïnstalleer word. Begin met die Debian basis beeld en installeer
SkiaSharp.NativeAssets.Linux
. - Wanneer al die vereiste afhanklikhede bygevoeg word, skryf’n eenvoudige program wat’n “Hallo Wêreld!“dokument en stoor dit in alle ondersteun stoor formate:
Let daarop dat die” TestOut " gids is gespesifiseer as’n uitset gids vir die stoor van uitset dokumente. Wanneer die aansoek in Docker uitgevoer word, sal’n gids op die gasheermasjien in hierdie gids in die houer gemonteer word. Dit sal jou in staat stel om die uitset wat deur Aspose.Words gegenereer word, maklik in die Docker-houer te sien.
Konfigurasie van’n Dockerfile
Die volgende stap is om Die Dockerfile te skep en te konfigureer.
- Skep die Dockerfile en plaas dit langs die oplossingslêer van u aansoek. Hou hierdie lêernaam sonder uitbreiding (die verstek).
- In die Dockerfile, spesifiseer:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2
WORKDIR /app
RUN apt-get update && apt-get install -y libfontconfig1
COPY . ./
RUN dotnet publish -c Release -o out
ENTRYPOINT ["dotnet", "Aspose.Words.Docker.Sample/out/Aspose.Words.Docker.Sample.dll"]
Bogenoemde is’n eenvoudige Dockerfile, wat die volgende instruksies bevat:
- Die SDK beeld wat gebruik moet word. Hier is dit die .NET Core SDK 2.2 beeld. Docker sal dit aflaai wanneer die bou uitgevoer word. Die weergawe van SDK word as’n etiket gespesifiseer.
- Die werkgids, wat in die volgende reël gespesifiseer word.
- Die opdrag om libfontconfig1 te installeer word in die houer uitgevoer. Dit word vereis deur SkiaSharp.
- Die opdrag om alles te kopieer na houer, publiseer die aansoek, en spesifiseer die inskrywing punt.
Bou en Hardloop Die Aansoek In Docker
Nou kan die aansoek gebou word en in Docker uitgevoer word. Maak jou gunsteling opdragprompt oop, verander gids na die gids met die toepassing (gids waar die oplossingslêer en Die Dockerfile geplaas is) en voer die volgende opdrag uit:
docker build -t awtest .
Die eerste keer dat hierdie opdrag uitgevoer word, kan dit langer neem, aangesien Docker die vereiste beelde moet aflaai. Sodra die vorige opdrag voltooi is, voer die volgende opdrag uit:
docker run --mount type=bind,source=C:\Temp,target=/TestOut --rm awtest from Docker
Beelde Ondersteun Aspose.Words
Aspose.Words is beskikbaar vir beide .NET Framework en .NET Core. Die .NET Core beelde is baie kleiner as .NET Framework beelde, wat die .NET Core die beter keuse maak vir die skep van mikroservices en vir gebruik in houers. Dit is moontlik om programme te ontplooi na Linux Docker houers (vir kruis-platform ontplooiing), wat ligter is as Windows houers.
Amptelike beelde vir die .NET Core SDK word verskaf vir:
- Debian 9 en 10
- Ubuntu 18.04 en 19.04
- Alpine 3.7 en 3.9
- Windows Nano Server
Om met grafika te werk, Aspose.Words vir .NET Standaard hang af van SkiaSharp. Dit beperk die prente wat Aspose.Words gebruik kan word tot die volgende:
- Debian 9 en 10
- Ubuntu 18.04 en 19.04
- Alpine 3.9
SkiaSharp werk nie op Windows Nano Server as gevolg van’n gebrek aan’n paar inheemse afhanklikhede, wat is’n bekende kwessie in SkiaSharp. Die probleem sal opgelos word in 1.68.1.1 weergawe van SkiaSharp. As jy Aspose.Words in’n Windows houer moet hardloop, gebruik die .NET Framework basisbeeld met die .NET Framework weergawe van Aspose.Words, wat nie van SkiaSharp afhang nie.
SkiaSharp is’n omslag rondom die inheemse Skia biblioteek. Die volgende runtimes word verskaf in die SkiaSharp NuGet pakket:
- osx
- tizen-armel
- tizen - x86
- win10-arm
- win10 - x64
- win10 - x86
- wen - x64
- wen - x86
Om dit in Linux uit te voer, moet jy addisionele NuGet pakkette gebruik met die ooreenstemmende inheemse bates, soos inheemse bou Van Skia biblioteek, hieronder gelys:
- SkiaSharp.NativeAssets.Linux - verskaf’n inheemse Skia bou vir x64 Debian gebaseer Linux verspreidings.
- SkiaSharp.NativeAssets.Linux.NoDependencies - die pakket is bedoel om gebruik te word in Linux verspreidings wat nie die libfontconfig afhanklikheid het nie. Getoets op RHEL 7 (x64).
- Goelze.SkiaSharp.NativeAssets.AlpineLinux - bied’n inheemse Skia bou vir x64 Alpine Linux 3.9.
- Jellyfin.SkiaSharp.NativeAssets.LinuxArm - bied’n inheemse Skia bou vir arm32 en arm64 Debian gebaseer Linux verspreidings.
Meer Voorbeelde
- In die voorbeeld hierbo, is die aansoek uitgevoer in’n SDK beeld. SDK beelde is swaarder as runtime beelde. Die onderstaande voorbeeld toon hoe die Docker lêer moet verander word ten einde die SDK beeld te gebruik om die aansoek te bou, en die runtime beeld om dit uit te voer:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build WORKDIR /app \# copy csproj and restore as distinct layers COPY Aspose.Words.Docker.Sample/*.csproj ./Aspose.Words.Docker.Sample/ WORKDIR /app/Aspose.Words.Docker.Sample RUN dotnet restore \# copy and publish app and libraries WORKDIR /app/ COPY Aspose.Words.Docker.Sample/. ./Aspose.Words.Docker.Sample/ WORKDIR /app/Aspose.Words.Docker.Sample RUN dotnet publish -c Release -o out \# copy to runtime environment FROM mcr.microsoft.com/dotnet/core/runtime:2.2 AS runtime WORKDIR /app \# libfontconfig1 is required to properly work with fonts in Linux. RUN apt-get update && apt-get install -y libfontconfig1 RUN apt install libharfbuzz-icu0 COPY --from=build /app/Aspose.Words.Docker.Sample/out ./ ENTRYPOINT ["dotnet", "Aspose.Words.Docker.Sample.dll"]
- Om die toepassing in Ubuntu 18.04 uit te voer, bly die Dockerfile feitlik dieselfde (slegs die etiket word verander):
FROM mcr.microsoft.com/dotnet/core/sdk:2.2-bionic AS build WORKDIR /app \# copy csproj and restore as distinct layers COPY Aspose.Words.Docker.Sample/*.csproj ./Aspose.Words.Docker.Sample/ WORKDIR /app/Aspose.Words.Docker.Sample RUN dotnet restore \# copy and publish app and libraries WORKDIR /app/ COPY Aspose.Words.Docker.Sample/. ./Aspose.Words.Docker.Sample/ WORKDIR /app/Aspose.Words.Docker.Sample RUN dotnet publish -c Release -o out \# copy to runtime environment FROM mcr.microsoft.com/dotnet/core/runtime:2.2-bionic AS runtime WORKDIR /app \# libfontconfig1 is required to properly work with fonts in Linux. RUN apt-get update && apt-get install -y libfontconfig1 RUN apt install libharfbuzz-icu0 COPY --from=build /app/Aspose.Words.Docker.Sample/out ./ ENTRYPOINT ["dotnet", "Aspose.Words.Docker.Sample.dll"]
- Om die aansoek in Alpine Linux uit te voer, is dit nodig om die SkiaSharp inheemse bates by te voeg en die volgende Dockerfile te gebruik:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2-alpine3.9 AS build WORKDIR /app \# copy csproj and restore as distinct layers COPY Aspose.Words.Docker.Sample/*.csproj ./Aspose.Words.Docker.Sample/ WORKDIR /app/Aspose.Words.Docker.Sample RUN dotnet restore \# copy and publish app and libraries WORKDIR /app/ COPY Aspose.Words.Docker.Sample/. ./Aspose.Words.Docker.Sample/ WORKDIR /app/Aspose.Words.Docker.Sample RUN dotnet publish -c Release -o out \# copy to runtime environment FROM mcr.microsoft.com/dotnet/core/runtime:2.2-alpine3.9 AS runtime WORKDIR /app \# fontconfig is required to properly work with fonts in Linux. RUN apk update && apk upgrade && apk add fontconfig && apk add harfbuzz COPY --from=build /app/Aspose.Words.Docker.Sample/out ./ ENTRYPOINT ["dotnet", "Aspose.Words.Docker.Sample.dll"]
- Om die aansoek in RHEL 7 uit te voer, is dit nodig om die SkiaSharp inheemse bates by te voeg en die volgende Dockerfile te gebruik:
FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build WORKDIR /app \# copy csproj and restore as distinct layers COPY Aspose.Words.Docker.Sample/*.csproj ./Aspose.Words.Docker.Sample/ WORKDIR /app/Aspose.Words.Docker.Sample RUN dotnet restore \# copy and publish app and libraries WORKDIR /app/ COPY Aspose.Words.Docker.Sample/. ./Aspose.Words.Docker.Sample/ WORKDIR /app/Aspose.Words.Docker.Sample RUN dotnet publish -c Release -o out \# copy to runtime environment FROM kkamberta/dotnet-21-rhel7 AS runtime WORKDIR /app COPY --from=build /app/Aspose.Words.Docker.Sample/out ./ ENTRYPOINT ["/opt/rh/rh-dotnet21/root/usr/bin/dotnet", "Aspose.Words.Docker.Sample.dll"]
Sien Ook
- Installeer Docker Werkskerm op Windows
- Installeer Docker Desktop Op Mac
- Visual Studio 2017, .NET Core 2.2 SDK
- Wissel na Linux houers opsie
- Installeer SkiaSharp.NativeAssets.Linux
- Bykomende inligting oor .NET Core SDK
- Gebruik addisionele NuGet pakkette: SkiaSharp.NativeAssets.Linux, SkiaSharp.NativeAssets.Linux.NoDependencies, Goelze.SkiaSharp.NativeAssets.AlpineLinux, Kwartelvis.SkiaSharp.NativeAssets.LinuxArm
- RHEL 7 (x64)