Jak uruchomić Aspose.Words w Docker
Mikrousługi w połączeniu z konteneryzacją umożliwiają łatwe łączenie technologii. Docker pozwala łatwo zintegrować funkcjonalność Aspose.Words z aplikacją, niezależnie od tego, jaka technologia znajduje się w stosie programistycznym.
Jeśli celujesz w mikrousługi lub jeśli główną technologią w Twoim stosie nie jest .NET, C++ ani Java, ale potrzebujesz funkcjonalności Aspose.Words, lub jeśli już używasz Docker w swoim stosie, możesz być zainteresowany wykorzystaniem Aspose.Words w Docker pojemnik.
Warunki wstępne
-
Docker musi być zainstalowany w twoim systemie. Aby uzyskać informacje na temat instalacji Docker na Windows lub Mac, skorzystaj z łączy w sekcji “Zobacz także”.
-
Należy również pamiętać, że w przykładzie podanym poniżej użyto formatu Visual Studio 2017, .NET Core 2.2 SDK.
Aplikacja Hello World
W tym przykładzie tworzysz prostą aplikację konsolową Hello World, która tworzy komunikat “Hello World!” dokument i zapisuje go we wszystkich obsługiwanych formatach zapisu. Aplikację można następnie zbudować i uruchomić w formacie Docker.
Tworzenie aplikacji konsolowej
Aby utworzyć program Hello World, wykonaj poniższe czynności:
- Po zainstalowaniu Docker upewnij się, że korzysta z kontenerów Linux (domyślnie). W razie potrzeby wybierz opcję Przełącz na kontenery Linux z menu Komputery stacjonarne Docker.
- W Visual Studio utwórz aplikację konsolową .NET Core.
- Zainstaluj najnowszą wersję Aspose.Words z NuGet. SkiaSharp zostanie zainstalowany jako zależność Aspose.Words.
- Ponieważ aplikacja będzie działać w formacie Linux, należy zainstalować odpowiednie natywne zasoby Linux. Zacznij od obrazu podstawowego Debian i zainstaluj plik
SkiaSharp.NativeAssets.Linux
. - Po dodaniu wszystkich wymaganych zależności napisz prosty program, który utworzy witrynę “Hello World!” dokument i zapisuje go we wszystkich obsługiwanych formatach zapisu:
Należy pamiętać, że folder “TestOut” jest określony jako folder wyjściowy do zapisywania dokumentów wyjściowych. Podczas uruchamiania aplikacji w Docker, folder na komputerze hosta zostanie zamontowany do tego folderu w kontenerze. Umożliwi to łatwe przeglądanie danych wyjściowych wygenerowanych przez Aspose.Words w kontenerze Docker.
Konfiguracja Dockerfile
Następnym krokiem jest utworzenie i skonfigurowanie pliku Dockerfile.
- Utwórz plik Dockerfile i umieść go obok pliku rozwiązania swojej aplikacji. Zachowaj tę nazwę pliku bez rozszerzenia (domyślnie).
- W Dockerfile określ:
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"]
Powyższy jest prostym plikiem Dockerfile, który zawiera następujące instrukcje:
- Obraz SDK, który ma zostać użyty. Oto obraz .NET Core SDK 2.2. Docker pobierze go po uruchomieniu kompilacji. Wersja SDK jest określona jako tag.
- Katalog roboczy określony w następnym wierszu.
- Polecenie instalacji libfontconfig1 jest uruchamiane w kontenerze. Jest to wymagane przez usługę SkiaSharp.
- Polecenie skopiowania wszystkiego do kontenera, opublikowania aplikacji i określenia punktu wejścia.
Budowanie i uruchamianie aplikacji w Docker
Teraz aplikację można zbudować i uruchomić w Docker. Otwórz swój ulubiony wiersz poleceń, zmień katalog na folder z aplikacją (folder, w którym znajduje się plik rozwiązania i Dockerfile) i uruchom następującą komendę:
docker build -t awtest .
Wykonanie tego polecenia po raz pierwszy może zająć więcej czasu, ponieważ Docker musi pobrać wymagane obrazy. Po zakończeniu poprzedniego polecenia uruchom następujące polecenie:
docker run --mount type=bind,source=C:\Temp,target=/TestOut --rm awtest from Docker
Obrazy obsługujące Aspose.Words
Aspose.Words jest dostępny zarówno w formacie .NET Framework, jak i .NET Core. Obrazy .NET Core mają znacznie mniejszy rozmiar niż obrazy .NET Framework, co sprawia, że .NET Core jest lepszym wyborem do tworzenia mikrousług i do stosowania w kontenerach. Możliwe jest wdrażanie aplikacji w kontenerach Linux Docker (w celu wdrożenia międzyplatformowego), które są lżejsze niż kontenery Windows.
Oficjalne obrazy .NET Core SDK są dostępne dla:
- Debian 9 i 10
- Ubuntu 18.04 i 19.04
- Alpine 3.7 i 3.9
- Windows Nano Server
Aby pracować z grafiką, Aspose.Words dla .NET Standard zależy od SkiaSharp. Ogranicza to obrazy, na których można uruchomić Aspose.Words, do następujących:
- Debian 9 i 10
- Ubuntu 18.04 i 19.04
- Alpine 3.9
SkiaSharp nie działa na Windows Nano Server ze względu na brak niektórych natywnych zależności, co jest znanym problemem w Skiasharp. Problem zostanie rozwiązany w wersji 1.68.1.1 Skiasharp. Jeśli chcesz uruchomić Aspose.Words w kontenerze Windows, użyj obrazu podstawowego .NET Framework z wersją Aspose.Words .NET Framework, która nie jest zależna od SkiaSharp.
SkiaSharp to opakowanie natywnej biblioteki Skia. W pakiecie SkiaSharp NuGet dostępne są następujące środowiska wykonawcze:
- osx
- tizen-armel
- tizen-x86
- win10-arm
- win10-x64
- win10-x86
- win-x64
- win-x86
Aby uruchomić go w Linux, powinieneś użyć dodatkowych pakietów NuGet z odpowiednimi zasobami natywnymi, takimi jak natywne kompilacje biblioteki Skia, wymienione poniżej:
- SkiaSharp.NativeAssets.Linux – zapewnia natywną kompilację Skia dla dystrybucji Linux opartych na x64 Debian.
- SkiaSharp.NativeAssets.Linux.NoDependencies – pakiet przeznaczony do wykorzystania w dystrybucjach Linux, które nie posiadają zależności libfontconfig. Testowane na formacie RHEL 7 (x64).
- Goelze.SkiaSharp.NativeAssets.AlpineLinux – zapewnia natywną wersję Skia dla x64 Alpine Linux 3.9.
- Jellyfin.SkiaSharp.NativeAssets.LinuxArm – zapewnia natywną kompilację Skia dla dystrybucji Linux opartych na arm32 i arm64 Debian.
Więcej przykładów
- W powyższym przykładzie aplikacja została uruchomiona w obrazie SDK. Obrazy SDK są cięższe niż obrazy środowiska wykonawczego. Poniższy przykład pokazuje, jak należy zmodyfikować plik Docker, aby użyć obrazu SDK do zbudowania aplikacji i obrazu wykonawczego do jej uruchomienia:
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"]
- Aby uruchomić aplikację w Ubuntu 18.04, Dockerfile pozostaje praktycznie taki sam (zmieniony jest jedynie tag):
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"]
- Aby uruchomić aplikację w formacie Alpine Linux należy dodać natywne zasoby SkiaSharp i użyć następującego formatu Dockerfile:
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"]
- Aby uruchomić aplikację w RHEL 7 należy dodać natywne zasoby SkiaSharp i użyć następującego Dockerfile:
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"]
Zobacz też
- Zainstaluj Docker Desktop na Windows
- Zainstaluj Docker Desktop na Macu
- Visual Studio 2017, .NET Core 2.2 SDK
- Opcja Przejdź na kontenery Linux
- Zainstaluj SkiaSharp.NativeAssets.Linux
- Dodatkowe informacje na temat .NET Core SDK
- Użyj dodatkowych pakietów NuGet: SkiaSharp.NativeAssets.Linux, SkiaSharp.NativeAssets.Linux.NoDependency, Goelze.SkiaSharp.NativeAssets.AlpineLinux, Jellyfin.SkiaSharp.NativeAssets.LinuxArm
- RHEL7 (x64)