Как запустить Aspose.HTML for .NET в Docker

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#».

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

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

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

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

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

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

Добавить в проект поддержку 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, установить необходимые шрифты и настроить поддержку глобализации UTF-8.
 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
 3# ---------- Base runtime stage ----------
 4# .NET runtime + font and globalization support
 5FROM mcr.microsoft.com/dotnet/runtime:6.0 AS base
 6WORKDIR /app
 7
 8# Install fonts, fontconfig, locale support, and CA certificates
 9RUN apt-get update && apt-get install -y --no-install-recommends \
10        libc6-dev \
11        libgdiplus \
12        fontconfig \
13        fonts-dejavu-core \
14        fonts-dejavu-extra \
15        fonts-liberation \
16        fonts-freefont-ttf \
17        locales \
18        ca-certificates \
19    && rm -rf /var/lib/apt/lists/*
20
21# Enable and generate UTF-8 locale
22RUN sed -i 's/# \(en_US.UTF-8 UTF-8\)/\1/' /etc/locale.gen \
23    && locale-gen
24
25# Configure globalization
26ENV LANG=en_US.UTF-8 \
27    LANGUAGE=en_US:en \
28    LC_ALL=en_US.UTF-8 \
29    DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
30
31# Build font cache (useful for predictable font discovery)
32RUN fc-cache -f -v
33
34# ---------- Build stage ----------
35# Restore and build the application
36FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
37WORKDIR /src
38COPY ["ConsoleApp/ConsoleApp.csproj", "ConsoleApp/"]
39RUN dotnet restore "ConsoleApp/ConsoleApp.csproj"
40COPY . .
41WORKDIR "/src/ConsoleApp"
42RUN dotnet build "ConsoleApp.csproj" -c Release -o /app/build
43
44# ---------- Publish stage ----------
45FROM build AS publish
46RUN dotnet publish "ConsoleApp.csproj" -c Release -o /app/publish /p:UseAppHost=false
47
48# ---------- Final runtime stage ----------
49FROM base AS final
50WORKDIR /app
51COPY --from=publish /app/publish .
52ENTRYPOINT ["dotnet", "ConsoleApp.dll"]

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

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

Эти четыре блока в 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.

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

Установите 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. Установите для конвертируемого файла свойство «Копировать в выходной каталог»:

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

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

Запустить docker

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

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

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