在 Docker 中开始使用 Aspose.HTML for .NET

Docker 容器

Docker 是一个流行的开源平台,可让您在容器中自动部署和管理应用程序。容器有许多功能和优点,为运行应用程序提供了一个轻量级的隔离环境,并允许它们在不同的操作系统和基础设施上一致运行。

容器就像一台虚拟机。它可以安装、删除、停止、恢复或连接到终端。因此,docker 容器是一个轻量级、自足的可执行软件包,其中包含运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。

在本文中,我们将探讨如何使用 docker 对 .NET 应用程序进行容器化,并将 Aspose.HTML 功能集成到您的项目中。在这里,您将逐步了解如何在 docker 中运行 Aspose.HTML–如何创建控制台应用程序和设置 Dockerfile。

系统要求

在 docker 中运行 Aspose.HTML 之前,必须在系统中安装 docker。要成功安装 Docker Desktop,应确保系统满足安装 docker 的最低要求。有关如何在 Windows、Mac 或 Linux 上安装 docker 的信息,请点击以下链接:

如何创建支持 Docker 的控制台应用程序

举个例子:我们创建了一个简单的 控制台应用程序 ConsoleApp,它可以转换 HTML 文档(document.html)并将其保存为 TIFF 格式。这个应用程序可以在 docker 中构建和运行。要创建一个控制台应用程序项目,请遵循以下几个步骤:

  1. 打开 Visual Studio(示例中使用的是 Visual Studio 2022),在 “Create a new project” 阶段,选择 Console App C#

文本 “创建新的控制台应用程序”

  1. 默认保留控制台应用程序项目的目录和参数(如示例所示),或指定自己的目录和参数:

文本 “设置控制台应用程序项目的目录和参数”

  1. 从框架菜单中选择 .NET 6.0(长期支持)。

文本 “从框架菜单中选择 .NET 6.0(长期支持)"。

  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 并安装 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 imagedocker build imagedocker publish imagedocker final image。让我们来了解一下 Dockerfile 中的步骤及其含义:

  1. docker base image定义了基本镜像,并安装了在容器中处理镜像和字体所需的依赖项。
  1. docker build image包含用于构建 .NET 应用程序的说明。
  1. docker publish image声明应用程序将被部署。
  1. 当 docker 容器启动时,docker final image会运行应用程序。

Dockerfile 中的这四个模块共同构建了一个多阶段的 docker 镜像。最初的基础阶段和构建阶段用于安装依赖项、还原软件包和构建应用程序。下一个发布和最后一个区块用于发布应用程序,以便在容器启动时部署和运行。

控制台应用程序示例

在示例中,我们建议使用一个简单的程序,将 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}

在 Docker 中配置控制台应用程序并运行 Aspose.HTML

  1. 要在 docker 中运行 Aspose.HTML,请从 NuGet 安装最新的 Aspose.HTML 版本和 System.Drawing.Common 6.0。

文本 “从 NuGet 安装最新的 Aspose.HTML 版本”。

文本 “从 NuGet 安装 System.Drawing.Common 6.0”

  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. 添加所有必要的依赖项和属性后,点击绿色按钮,在 docker 容器中运行 HTML 到 TIFF 的转换。

文本 “运行 docker

帮助与支持

如果您需要帮助或对在 docker 中运行 Aspose.HTML 有任何疑问,请联系 Free Support ForumFree Consulting。我们将竭诚为您服务!

另见

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.