Как запустить Aspose.HTML в Docker – Aspose.HTML for .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 Desktop в Windows
- Установить Docker Desktop на Mac
- Установить Docker Desktop в Linux
Как создать консольное приложение с поддержкой Docker
Рассмотрим пример: мы создаем простое
Консольное приложение ConsoleApp
, которое преобразует документ HTML (document.html
) и сохраняет его в формате TIFF. Это приложение вы можете собрать и запустить в docker. Чтобы создать проект консольного приложения, выполните несколько шагов:
- Откройте Visual Studio (в примере используется Visual Studio 2022) и на этапе «Создать новый проект» выберите «Консольное приложение C#».
- Директорию и параметры для проекта консольного приложения оставьте по умолчанию (как в примере) или укажите свои:
- Выберите .NET 6.0 (долгосрочная поддержка) в меню Framework.
- Добавьте в проект поддержку docker и выберите целевую ОС Linux.
После добавления поддержки Docker создается файл Dockerfile с содержимым по умолчанию.
Как настроить Dockerfile
Правильно настроив Dockerfile, вы можете определить шаги для создания образа docker и создать контейнерную среду, включающую все необходимые зависимости и конфигурации для запуска вашего приложения.
- Вот содержимое 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"]
- Вам нужно отредактировать 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 и их значения:
- docker base image определяет базовый образ и устанавливает необходимые зависимости, необходимые для обработки изображений и шрифтов в контейнере.
- Для ключевого слова FROM требуется полное имя образа контейнера Docker. В первой строке указывается базовый образ
mcr.microsoft.com/dotnet/runtime:6.0
. Этот базовый образ обеспечивает среду выполнения для приложений .NET. - Команда WORKDIR устанавливает рабочий каталог внутри docker в
/app
. - Команды RUN обновляют списки пакетов, устанавливают необходимые пакеты libgdiplus, libc6-dev, ttf-mscorefonts-installer и fontconfig, а затем очищают кеш пакетов.
- docker build image содержит инструкции, используемые для сборки приложений .NET.
- Команда FROM указывает базовый образ
mcr.microsoft.com/dotnet/sdk:6.0
. Сегмент dotnet – это репозиторий контейнера, тогда как сегментsdk
– это имя образа контейнера Docker. Образ включает пакет SDK для .NET 6.0, позволяющий создавать приложения .NET. - Инструкция WORKDIR устанавливает рабочий каталог внутри контейнера в
/src
. - Команда COPY копирует файл проекта ConsoleApp.csproj из локального каталога
ConsoleApp/
в каталог контейнера/src/ConsoleApp/
. - Команда RUN выполняет
dotnet restore
для восстановления пакетов NuGet для проекта. – Команда COPY указывает docker скопировать указанную папку на вашем компьютере в папку в контейнере докера –/scr/
. - Команда RUN
dotnet build "ConsoleApp.csproj" -c Release -o /app/build
компилирует приложение .NET, указанное вConsoleApp.csproj
, используя конфигурациюRelease
, и сохраняет выходные данные сборки в/app/build
внутри контейнера.
- docker publish image объявляет приложение для развертывания.
- Строка
FROM build AS publish
устанавливает новую стадию образа docker с именемpublish
на основе предыдущей стадииbuild
. Это указывает на то, что этапpublish
унаследует все файлы, зависимости и конфигурации от этапаbuild
. - Команда RUN выполняет
dotnet publish
, чтобы опубликовать приложение в конфигурацииRelease
, с выходным каталогом, заданным как/app/publish
.
- docker final image запускает приложение при старте контейнера докера.
- Инструкция FROM использует base стадию в качестве базового образа.
- Команда WORKDIR изменяет текущий каталог внутри контейнера на
/app
. - Команда COPY указывает docker скопировать опубликованные файлы из этапа
publish
в текущий каталог наfinal
этапе. - Команда ENTRYPOINT используется для запуска исполняемого файла, которым является
ConsoleApp.dll
.
Эти четыре блока в 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
- Чтобы запустить Aspose.HTML в docker, установите последнюю версию Aspose.HTML и System.Drawing.Common 6.0 из NuGet.
- Отредактируйте проект 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>
- Установите для конвертируемого файла свойство «Копировать в выходной каталог»:
- Запустите преобразование HTML в TIFF для Linux в докер-контейнере, нажав зеленую кнопку.
Помощь и поддержка
Если вам нужна помощь или у вас есть вопросы по запуску Aspose.HTML в docker, обратитесь на Форум бесплатной поддержки или воспользуйтесь Бесплатной консультацией. Мы будем рады вам помочь!
Смотрите также