Cómo ejecutar Aspose.HTML en Docker – Aspose.HTML for .NET
Contenedor acoplable
Docker es una popular plataforma de código abierto que le permite automatizar la implementación y administración de aplicaciones dentro de contenedores. Los contenedores tienen muchas características y beneficios, ya que brindan un entorno liviano y aislado para ejecutar aplicaciones y les permiten trabajar de manera consistente en diferentes sistemas operativos e infraestructuras.
El contenedor es como una máquina virtual. Se puede instalar, eliminar, detener, reanudar o conectar al terminal. Por lo tanto, el contenedor Docker es un paquete de software ejecutable, liviano y autónomo que incluye todo lo necesario para ejecutar una aplicación: código, tiempo de ejecución, herramientas del sistema, bibliotecas del sistema y configuraciones.
En este artículo, veremos cómo contener una aplicación .NET con Docker e integrar la funcionalidad Aspose.HTML en su proyecto. Aquí encontrará instrucciones paso a paso sobre cómo ejecutar Aspose.HTML en Docker: cómo crear una aplicación de consola y configurar un Dockerfile.
Requisitos del sistema
Antes de poder ejecutar Aspose.HTML en Docker, debe tener Docker instalado en su sistema. Para instalar Docker Desktop correctamente, debe asegurarse de que su sistema cumpla con los requisitos mínimos para la instalación de Docker. Para obtener información sobre cómo instalar Docker en Windows, Mac o Linux, siga los enlaces:
Cómo crear una aplicación de consola con soporte Docker
Consideremos el ejemplo: creamos una
Aplicación de consola ConsoleApp
simple que convierte un documento HTML (document.html
) y lo guarda en formato TIFF. Esta aplicación se puede compilar y ejecutar en Docker. Para crear un proyecto de aplicación de consola, siga algunos pasos:
- Abra Visual Studio (en el ejemplo se usa Visual Studio 2022) y en la etapa “Create a new project”, seleccione una
Console App C#
.
- Deje el directorio y los parámetros para el proyecto de la aplicación de consola de forma predeterminada (como en el ejemplo) o especifique los suyos propios:
- Elija .NET 6.0 (soporte a largo plazo) en el menú Framework.
- Agregue compatibilidad con Docker al proyecto y seleccione el sistema operativo Linux de destino.
Después de agregar compatibilidad con Docker, se crea un Dockerfile con contenido predeterminado.
Cómo configurar un archivo Docker
Al configurar correctamente Dockerfile, puede definir los pasos para crear una imagen de Docker y crear un entorno en contenedores que incluya todas las dependencias y configuraciones necesarias para ejecutar su aplicación.
- Aquí está el contenido predeterminado de 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"]
- Debe editar el Dockerfile e instalar libgdiplus, las bibliotecas y fuentes necesarias.
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"]
Un Dockerfile es un archivo de texto que contiene un conjunto de instrucciones que se utilizan para crear una imagen de Docker. Se puede dividir en cuatro bloques distintos: bloques docker base image, docker build image, docker publish image y docker final image. Repasemos los pasos de un Dockerfile y sus significados:
- La docker base image define la imagen base e instala las dependencias necesarias para manejar imágenes y fuentes en el contenedor.
- La palabra clave FROM requiere un nombre de imagen de contenedor acoplable completo. En la primera línea, se especifica la imagen base como
mcr.microsoft.com/dotnet/runtime:6.0
. Esta imagen base proporciona el entorno de ejecución para aplicaciones .NET. - El comando WORKDIR establece el directorio de trabajo dentro de la ventana acoplable en
/app
. - Los comandos RUN actualizan las listas de paquetes, instalan los paquetes necesarios libgdiplus, libc6-dev, ttf-mscorefonts-installer y fontconfig, y luego limpian el caché del paquete.
- La docker build image contiene las instrucciones utilizadas para crear aplicaciones .NET.
- El comando FROM especifica la imagen base
mcr.microsoft.com/dotnet/sdk:6.0
. El segmentodotnet
es el repositorio del contenedor, mientras que el segmentosdk
es el nombre de la imagen del contenedor acoplable. La imagen incluye el SDK de .NET 6.0, lo que le permite crear su aplicación .NET. - La instrucción WORKDIR establece el directorio de trabajo dentro del contenedor en
/src
. - El comando COPY copia el archivo de proyecto ConsoleApp.csproj del directorio local
ConsoleApp/
al directorio/src/ConsoleApp/
del contenedor. - El comando RUN realiza una
dotnet restore
para restaurar los paquetes NuGet para el proyecto. - El comando COPY le dice a Docker que copie la carpeta especificada en su computadora a una carpeta en el contenedor de Docker:
/scr/
. - El comando RUN
dotnet build "ConsoleApp.csproj" -c Release -o /app/build
compila la aplicación .NET especificada enConsoleApp.csproj
usando la configuraciónRelease
y almacena el resultado de la compilación en/app/build
dentro del contenedor.
- La docker publish image declara la aplicación para su implementación.
- La línea
FROM build AS publish
configura una nueva etapa de imagen acoplable llamadapublish
basada en la etapa anteriorbuild
. Esto indica que la etapapublish
heredará todos los archivos, dependencias y configuraciones de la etapabuild
. - El comando RUN ejecuta
dotnet publish
para publicar la aplicación en la configuraciónRelease
, con el directorio de salida configurado como/app/publish
.
- La docker final image ejecuta la aplicación cuando se inicia el contenedor de la ventana acoplable.
- La instrucción FROM utiliza la etapa
base
como imagen base. - El comando WORKDIR cambia el directorio actual dentro del contenedor a
/app
. - El comando COPY le dice a la ventana acoplable que copie los archivos publicados desde la etapa
publish
al directorio actual en la etapafinal
. - El comando ENTRYPOINT se utiliza para ejecutar un archivo ejecutable, que es
ConsoleApp.dll
.
Estos cuatro bloques del Dockerfile trabajan juntos para crear una imagen acoplable de varias etapas. Las etapas inicial de base y compilación se utilizan para instalar dependencias, restaurar paquetes y compilar la aplicación. Los siguientes bloques de publish y final se utilizan para publicar la aplicación para su implementación y ejecución cuando se inicia el contenedor.
Ejemplo de aplicación de consola
En el ejemplo, sugerimos utilizar un programa simple que convierte un documento HTML a un formato de imagen 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}
Configure la aplicación de consola y ejecute Aspose.HTML en Docker
- Para ejecutar Aspose.HTML en la ventana acoplable, instale la última versión de Aspose.HTML y System.Drawing.Common 6.0 de NuGet.
- Edite el proyecto ConsoleApp.csproj; agregue la opción InvariantGlobalization =
false
:
El siguiente archivo es un archivo de proyecto .NET que define la configuración del proyecto, las dependencias y los archivos adicionales necesarios para crear una aplicación ejecutable. <InvariantGlobalization>
es un elemento adicional que deshabilita el comportamiento de globalización invariante en el proyecto. Cuando se establece en falso, el proyecto utilizará el comportamiento de globalización predeterminado.
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>
- Configure la propiedad “Сopy to Output Directory” para el archivo convertido:
- Cuando se agreguen todas las dependencias y propiedades requeridas, ejecute la conversión de HTML a TIFF para Linux en un contenedor acoplable haciendo clic en el botón verde.
Ayuda y soporte
Si necesita ayuda o tiene preguntas sobre cómo ejecutar Aspose.HTML en Docker, comuníquese con el Foro de soporte gratuito o la Consulta gratuita. ¡Estaremos encantados de ayudarte!
Ver también