Как запустить Aspose.HTML в Docker – Aspose.HTML для .NET

Docker Container

Docker – популярная платформа с открытым исходным кодом, позволяющая автоматизировать развертывание и управление приложениями внутри контейнеров. Контейнеры имеют множество функций и преимуществ, предоставляя облегченную и изолированную среду для запуска приложений и позволяя им согласованно работать в разных операционных системах и инфраструктурах.

Контейнер похож на виртуальную машину. Его можно установить, удалить, остановить, возобновить или подключить к терминалу. Итак, docker container – это легкий автономный исполняемый программный пакет, который включает в себя все необходимое для запуска приложения: код, среду выполнения, системные инструменты, системные библиотеки и настройки.

В этой статье мы рассмотрим, как контейнеризовать приложение .NET с помощью docker и интегрировать функциональность Aspose.HTML в ваш проект. Здесь вы найдете пошаговые инструкции о том, как запустить Aspose.HTML в docker – как создать консольное приложение и настроить Dockerfile.

Системные Требования

Прежде чем вы сможете запустить Aspose.HTML в docker, в вашей системе должен быть установлен docker. Чтобы успешно установить Docker Desktop, вы должны убедиться, что ваша система соответствует минимальным требованиям для установки Docker. Для получения информации о том, как установить Docker на Windows, Mac или Linux, перейдите по ссылкам:

Как создать консольное приложение с поддержкой Docker

Рассмотрим пример: мы создаем простое Консольное приложение ConsoleApp, которое преобразует документ HTML (document.html) и сохраняет его в формате TIFF. Это приложение вы можете собрать и запустить в docker. Чтобы создать проект консольного приложения, выполните несколько шагов:

  1. Откройте Visual Studio (в примере используется Visual Studio 2022) и на этапе «Создать новый проект» выберите «Консольное приложение C#».

Text “Создать новое консольное приложение”

  1. Директорию и параметры для проекта консольного приложения оставьте по умолчанию (как в примере) или укажите свои:

Text “Установить каталог и параметры для проекта консольного приложения”

  1. Выберите .NET 6.0 (долгосрочная поддержка) в меню Framework.

Text “Выберите .NET 6.0 (долгосрочная поддержка) в меню Framework”

  1. Добавьте в проект поддержку docker и выберите целевую ОС Linux.

Text “Добавить в проект поддержку docker”

После добавления поддержки Docker создается файл Dockerfile с содержимым по умолчанию.

Как настроить Dockerfile

Правильно настроив Dockerfile, вы можете определить шаги для создания образа docker и создать контейнерную среду, включающую все необходимые зависимости и конфигурации для запуска вашего приложения.

  1. Вот содержимое Dockerfile по умолчанию:
 1#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
 2
 3FROM mcr.microsoft.com/dotnet/runtime:6.0 AS base
 4WORKDIR /app
 5
 6FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
 7WORKDIR /src
 8COPY ["ConsoleApp/ConsoleApp.csproj", "ConsoleApp/"]
 9RUN dotnet restore "ConsoleApp/ConsoleApp.csproj"
10COPY . .
11WORKDIR "/src/ConsoleApp"
12RUN dotnet build "ConsoleApp.csproj" -c Release -o /app/build
13
14FROM build AS publish
15RUN dotnet publish "ConsoleApp.csproj" -c Release -o /app/publish
16
17FROM base AS final
18WORKDIR /app
19COPY --from=publish /app/publish .
20ENTRYPOINT ["dotnet", "ConsoleApp.dll"]
  1. Вам нужно отредактировать Dockerfile и установить libgdiplus, необходимые библиотеки и шрифты.
 1#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
 2
 3FROM mcr.microsoft.com/dotnet/runtime:6.0 AS base
 4WORKDIR /app
 5RUN apt-get update \
 6    && apt-get install -y --no-install-recommends libgdiplus libc6-dev \
 7    && apt-get clean \
 8    && rm -rf /var/lib/apt/lists/*
 9RUN sed -i'.bak' 's/$/ contrib/' /etc/apt/sources.list
10RUN apt-get update; apt-get install -y ttf-mscorefonts-installer fontconfig
11
12FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
13WORKDIR /src
14COPY ["ConsoleApp/ConsoleApp.csproj", "ConsoleApp/"]
15RUN dotnet restore "ConsoleApp/ConsoleApp.csproj"
16COPY . .
17WORKDIR "/src/ConsoleApp"
18RUN dotnet build "ConsoleApp.csproj" -c Release -o /app/build
19
20FROM build AS publish
21RUN dotnet publish "ConsoleApp.csproj" -c Release -o /app/publish /p:UseAppHost=false
22
23FROM base AS final
24WORKDIR /app
25COPY --from=publish /app/publish .
26ENTRYPOINT ["dotnet", "ConsoleApp.dll"]

Dockerfile – это текстовый файл, содержащий набор инструкций, используемых для создания образа Docker. Его можно разделить на четыре отдельных блока: docker base image, docker build image, docker publish image и docker final image. Давайте рассмотрим команды в Dockerfile и их значения:

  1. docker base image определяет базовый образ и устанавливает необходимые зависимости, необходимые для обработки изображений и шрифтов в контейнере.
  1. docker build image содержит инструкции, используемые для сборки приложений .NET.
  1. docker publish image объявляет приложение для развертывания.
  1. docker final image запускает приложение при старте контейнера докера.

Эти четыре блока в Dockerfile работают вместе для создания многоэтапного образа Docker. Начальные base и build этапы используются для установки зависимостей, восстановления пакетов и сборки приложения. Следующие publish и final блоки используются для публикации приложения для развертывания и запуска при старте контейнера.

Пример консольного приложения

В примере мы предлагаем использовать простую программу, которая конвертирует HTML-документ в формат изображения TIFF:

 1using Aspose.Html;
 2using Aspose.Html.Rendering.Image;
 3
 4namespace ConsoleApp
 5{
 6    internal class Program
 7    {
 8        static void Main(string[] args)
 9        {
10            using var doc = new HTMLDocument("document.html");
11            using var dev = new ImageDevice(new ImageRenderingOptions(ImageFormat.Tiff), "result.tiff");
12            doc.RenderTo(dev);
13        }
14    }
15}

Настройте консольное приложение и запустите Aspose.HTML в Docker

  1. Чтобы запустить Aspose.HTML в docker, установите последнюю версию Aspose.HTML и System.Drawing.Common 6.0 из NuGet.

Text “Установите последнюю версию Aspose.HTML из NuGet”

Text «Установите System.Drawing.Common 6.0 из NuGet»

  1. Отредактируйте проект ConsoleApp.csproj – добавьте параметр InvariantGlobalization = false:

Следующий файл представляет собой файл проекта .NET. Он определяет параметры проекта, зависимости и дополнительные файлы, необходимые для создания исполняемого приложения. <InvariantGlobalization> – это дополнительный элемент, отключающий инвариантное поведение глобализации в проекте. Если установлено значение false, проект будет использовать поведение глобализации по умолчанию.

 1<Project Sdk="Microsoft.NET.Sdk">
 2
 3  <PropertyGroup>
 4    <OutputType>Exe</OutputType>
 5    <TargetFramework>net6.0</TargetFramework>
 6    <ImplicitUsings>enable</ImplicitUsings>
 7    <Nullable>enable</Nullable>
 8    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
 9  </PropertyGroup>
10
11  <ItemGroup>
12    <PackageReference Include="Aspose.HTML" Version="23.5.0" />
13    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.14.0" />
14    <PackageReference Include="System.Drawing.Common" Version="6.0.0" />
15  </ItemGroup>
16
17  <ItemGroup>
18    <None Update="document.html">
19      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
20    </None>
21  </ItemGroup>
22
23  <ItemGroup>
24    <RuntimeHostConfigurationOption Include="System.Drawing.EnableUnixSupport" Value="true" />
25  </ItemGroup>
26
27  <PropertyGroup>
28	  <InvariantGlobalization>false</InvariantGlobalization>
29  </PropertyGroup>
30
31</Project>
  1. Установите для конвертируемого файла свойство «Копировать в выходной каталог»:

Text “Установить свойство “Копировать в выходной каталог” для сконвертированного файла”

  1. Запустите преобразование HTML в TIFF для Linux в докер-контейнере, нажав зеленую кнопку.

Text “Запустить docker”

Помощь и поддержка

Если вам нужна помощь или у вас есть вопросы по запуску Aspose.HTML в docker, обратитесь на Форум бесплатной поддержки или воспользуйтесь Бесплатной консультацией. Мы будем рады вам помочь!

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

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.