Как бегать 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.2 SDK используется в примере, приведенном ниже.

Приложение Hello World

В этом примере вы создаете простое консольное приложение Hello World, которое делает документ “Hello World!” и сохраняет его во всех поддерживаемых форматах сохранения. Затем приложение может быть построено и запущено в Docker.

Создание консоли приложения

Чтобы создать программу Hello World, выполните следующие действия:

  1. Однажды Docker установлен, убедитесь, что он использует Linux Контейнеры (по умолчанию). При необходимости выберите Switch для Linux Контейнерный вариант из Docker Меню рабочего стола.
  2. в Visual Studio, создавать .NET Core Консольное приложение.
    net-console-application
  3. Установите последнюю Aspose.Words Версия из NuGet. Ски Sharp будет устанавливаться как зависимость от Aspose.Words.
    skiasharp-dependency
  4. Поскольку приложение будет работать на <p notrans="<p notrans=" Linux"="">

    "> подходящий родной Linux Активы должны быть установлены. Начнем с того, что Debian Базовое изображение и установка SkiaSharp.NativeAssets.Linux.
  5. При добавлении всех необходимых зависимостей напишите простую программу, которая создает документ “Hello World!” и сохраняет его во всех поддерживаемых форматах сохранения:

Обратите внимание, что папка “TestOut” указана как выходная папка для сохранения выходных документов. При запуске приложения в <p notrans="<p 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. The .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 - это обертка вокруг родной библиотеки Skia. В SkiaSharp предусмотрены следующие периоды выполнения NuGet упаковка:

  • Оскс
  • кольчуга
  • tizen-x86
  • win10-arm
  • win10-x64
  • win10-x86
  • win-x64
  • win-x86

Чтобы запустить его в Linux, Вы должны использовать дополнительные NuGet пакеты с соответствующими нативными активами, такими как нативные сборки библиотеки Skia, перечисленные ниже:

  • SkiaSharp.NativeAssets.Linux - Обеспечивает родную сборку Skia для x64 Debian основанный на Linux распределения.
  • SkiaSharp.NativeAssets.Linux.NoDependencies Упаковка предназначена для использования в Linux дистрибутивы, не имеющие зависимости от libfontconfig. Проверено на RHEL 7 (x64).
  • Goelze.SkiaSharp.NativeAssets.AlpineLinux - Обеспечивает родную сборку Skia для x64 Alpine Linux 3.9.
  • Jellyfin.SkiaSharp.NativeAssets.LinuxArm - Обеспечивает родную сборку Skia для arm32 и arm64 Debian основанный на Linux распределения.

Больше примеров

  1. В приведенном выше примере приложение было запущено в SDK Изображение. SDK Изображения тяжелее, чем изображения во время выполнения. Приведенный ниже пример показывает, как Docker файл должен быть изменен для использования SDK Изображение для создания приложения и изображение времени выполнения для его запуска:
    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"]

Смотрите также