Как бегать 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, выполните следующие действия:
- Однажды Docker установлен, убедитесь, что он использует Linux Контейнеры (по умолчанию). При необходимости выберите Switch для Linux Контейнерный вариант из Docker Меню рабочего стола.
- в Visual Studio, создавать .NET Core Консольное приложение.
- Установите последнюю Aspose.Words Версия из NuGet. Ски Sharp будет устанавливаться как зависимость от Aspose.Words.
- Поскольку приложение будет работать на <p notrans="<p notrans=" Linux"="">"> подходящий родной Linux Активы должны быть установлены. Начнем с того, что Debian Базовое изображение и установка
SkiaSharp.NativeAssets
.Linux. - При добавлении всех необходимых зависимостей напишите простую программу, которая создает документ “Hello World!” и сохраняет его во всех поддерживаемых форматах сохранения:
Обратите внимание, что папка “TestOut” указана как выходная папка для сохранения выходных документов. При запуске приложения в <p notrans="<p notrans=" Docker"="">
"> папка на хост-машине будет установлена на эту папку в контейнере. Это позволит вам легко просматривать результат, генерируемый Aspose.Words в Docker контейнер.Конфигурирование a Dockerfile
Следующим шагом является создание и настройка Dockerfile.
- создавать Dockerfile Поместите его рядом с файлом решения вашего приложения. Сохраните имя файла без расширения (по умолчанию).
- В этом 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 распределения.
Больше примеров
- В приведенном выше примере приложение было запущено в 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"]
- Чтобы запустить приложение в 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"]
- Чтобы запустить приложение в 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"]
- Чтобы запустить приложение в 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"]
Смотрите также
- Устанавливать Docker На рабочем столе Windows
- Устанавливать Docker Desktop для Mac
- Visual Studio 2017, .NET Core 2.2 SDK
- Переключаться на Linux контейнеры вариант
- Установить SkiaSharp.NativeAssets.Linux
- Дополнительная информация о .NET Core SDK
- Используйте дополнительно NuGet пакеты: SkiaSharp.NativeAssets.Linux, SkiaSharp.NativeAssets.Linux.Независимость, Goelze.SkiaSharp.NativeAssets.AlpineLinux, Jellyfin.SkiaSharp.NativeAssets.LinuxАрмия
- RHEL 7 (x64)