Как да бягаме Aspose.Words в Docker

Микроуслугите, заедно с контейнеризацията, позволяват лесно да се комбинират технологии. Docker ви позволява лесно да се интегрирате Aspose.Words функционалност във вашето приложение, независимо от това какво е технологията във вашия разработъчен стек.

В случай, че сте насочени към микроуслуги, или ако основната технология във вашия стек не е .NET, C++ или Java, но ти трябва Aspose.Words функционалност или ако вече използвате Docker в стека си, тогава може да се интересуват от използването Aspose.Words в Docker контейнер.

Предпоставки

  • Docker трябва да бъде инсталиран на вашата система. За информация как да инсталирате Docker върху Windows или Mac, се отнасят до линковете в раздел “Вижте също.”

  • Също така, имайте предвид, че Visual Studio 2017, .NET Core 2, 2 SDK е използван в примера по- долу.

Здравейте World Application

В този пример, можете да създадете просто Hello World конзола приложение, което прави Allo World! да се запази във всички поддържани формати за запис. След това приложението може да бъде изградено и стартирано в Docker.

Създаване на приложение за конзола

За да създадете програма Hello World, следвайте стъпките по-долу:

  1. Веднъж Docker е инсталиран, уверете се, че той използва Linux Контейнери (по подразбиране). Ако е необходимо, изберете превключвателя Linux опция за контейнери от Docker Меню на работния плот.
  2. В Visual Studio, създаване на .NET Core конзолно приложение.
    net-console-application
  3. Инсталиране на последната Aspose.Words версия от NuGet. Скиа Sharp ще бъде инсталиран като зависимост от Aspose.Words.
    skiasharp-dependency
  4. Тъй като заявлението ще бъде изпълнено <span notrans="<span notrans=" Linux"="">,"> подходящите местни Linux активите трябва да бъдат инсталирани. Започнете с Debian основен образ и монтаж SkiaSharp.NativeAssets.Linux.
  5. Когато се добавят всички необходими зависимости, напишете една проста програма, която създава голо World! това се записва във всички поддържани формати:

Имайте предвид, че по-долу е посочено като папка за изход за запазване на изходни документи. При изпълнение на заявлението в <span notrans="<span notrans=" Docker"="">,"> папка на хост машината ще бъде монтирана на тази папка в контейнера. Това ще ви позволи лесно да видите изхода, генериран от Aspose.Words в Docker контейнер.

Настройване на a Dockerfile

Следващата стъпка е да се създаде и конфигурира Dockerfile.

  1. Създаване на Dockerfile и го поставете до файла с решение на вашето заявление. Запазете това име на файла без разширение (по подразбиране).
  2. В Dockerfile, посочва:
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"]

Горното е просто. Dockerfile, която съдържа следните инструкции:

  • На SDK да се използва изображение. Ето го. .NET Core SDK 2.2 изображение. Docker ще го изтеглите, когато сградата се стартира. Версия на SDK е посочено като таг.
  • Работната директория, която е посочена в следващия ред.
  • Командата за инсталиране на libfontconfig1 се изпълнява в контейнера. Това се изисква от SkiaSharp.
  • Командата да копирате всичко в контейнера, да публикувате заявлението и да посочите входната точка.

Изграждане и управление на приложението в Docker

Сега приложението може да бъде построено и работи в Docker. Отваряне на любимата си команда, промяна на директорията в папката с приложението (сгъване, където файлът с решение и Dockerfile са поставени) и изпълняват следната команда:

docker build -t awtest .

За първи път тази команда се изпълнява може да отнеме повече време, тъй като Docker трябва да изтеглите необходимите изображения. След като предишната команда е завършена, стартирайте следната команда:

docker run --mount type=bind,source=C:\Temp,target=/TestOut --rm awtest from Docker

Поддръжка на изображения Aspose.Words

Aspose.Words е на разположение и за двете .NET Framework както и .NET Core. На .NET Core изображенията са много по-малки по размер от .NET Framework изображения, което прави .NET Core по-добрият избор за създаване на микроуслуги и за използване в контейнери. Възможно е да се използват приложения за Linux Docker контейнери (за разполагане на кръстосани платформи), които са по-леки от Windows контейнери.

Официални изображения за .NET Core SDK са предвидени:

  • Debian 9 и 10
  • Ubuntu 18.04 и 19.04
  • Alpine 3, 7 и 3, 9
  • Windows Нано Server

За да работи с графики, Aspose.Words вместо .NET Standard зависи от SkiaSharp. Това ограничава изображенията Aspose.Words може да се премине към следното:

  • Debian 9 и 10
  • Ubuntu 18.04 и 19.04
  • Alpine 3.9

SkiaSharp не работи върху Windows Нано Server поради липса на местни зависимости, което е известен проблем в SkiaSharp. Въпросът ще бъде решен в версия 1.68.1.1 на SkiaSharp. Ако искаш да бягаш Aspose.Words в Windows контейнер, използвайте .NET Framework базово изображение с .NET Framework версия на Aspose.Words, което не зависи от SkiaSharp.

SkiaSharp е опаковка около местната библиотека на Ския. В SkiaSharp са предвидени следните времеви интервали NuGet опаковка:

  • osx
  • тизен-армел
  • tizen-x86
  • win10-arm
  • win10-x64
  • win10-x86
  • win-x64
  • win-x86

За да го пусна. Linux, трябва да използвате допълнително NuGet пакети със съответните местни активи, като например местни сгради на библиотеката на Ския, изброени по-долу:

  • SkiaSharp.NativeAssets.Linux год. Debian основа Linux разпределения.
  • SkiaSharp.NativeAssets.Linux.NoDependencies Пакетът е предназначен да се използва в Linux дистрибуции, които нямат зависимостта libfontconfig. Тествани върху RHEL 7 (x64).
  • Goelze.SkiaSharp.NativeAssets.AlpineLinux год. Alpine Linux 3.9.
  • Jellyfin.SkiaSharp.NativeAssets.LinuxArm год. Debian основа Linux разпределения.

Повече примери

  1. В гореспоменатия пример, заявлението е направено в SDK образ. SDK изображенията са по-тежки от образите за бягане. Примерът по- долу показва как Docker файлът трябва да бъде променен, за да се използва SDK изображение, за да се изгради приложението, и на runtime изображение, за да го стартирате:
    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"]
  2. Изпълнение на заявлението в Ubuntu 18. 04. Dockerfile остава практически същото (само етикетът се променя):
    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"]
  3. Изпълнение на заявлението в Alpine Linux, от него се изисква да добави родния активи на SkiaSharp и да използва следните 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"]
  4. Изпълнение на заявлението в RHEL 7, необходимо е да се добавят местните активи на SkiaSharp и да се използват следните 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"]

Вижте също