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

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

Close
Loading

Analyzing your prompt, please hold on...

An error occurred while retrieving the results. Please refresh the page and try again.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.