Comment exécuter Aspose.HTML dans Docker – Exécuter la conversion et le traitement HTML n'importe où
Conteneur Docker
Docker est une plateforme open-source populaire qui vous permet d’automatiser le déploiement et la gestion d’applications dans des conteneurs. Les conteneurs présentent de nombreuses caractéristiques et avantages : ils offrent un environnement léger et isolé pour l’exécution des applications et leur permettent de fonctionner de manière cohérente sur différents systèmes d’exploitation et infrastructures.
Le conteneur est comme une machine virtuelle. Il peut être installé, supprimé, arrêté, repris ou connecté au terminal. Le conteneur docker est donc un logiciel exécutable léger et autonome qui comprend tout ce qui est nécessaire à l’exécution d’une application : le code, le moteur d’exécution, les outils système, les bibliothèques système et les paramètres.
Dans cet article, nous verrons comment conteneuriser une application .NET avec Docker et intégrer la fonctionnalité Aspose.HTML dans votre projet. Vous trouverez ici des instructions pas à pas sur la manière d’exécuter Aspose.HTML dans Docker – comment créer une application console et configurer un fichier Docker.
Configuration requise
Avant de pouvoir exécuter Aspose.HTML dans Docker, vous devez installer Docker sur votre système. Pour installer Docker Desktop avec succès, vous devez vous assurer que votre système répond à la configuration minimale requise pour l’installation de Docker. Pour plus d’informations sur l’installation de Docker sur Windows, Mac ou Linux, suivez les liens :
- Installer Docker Desktop sur Windows
- Installer Docker Desktop sur Mac
- Installer Docker Desktop sur Linux
Comment créer une application console avec le support de Docker
Prenons un exemple : nous créons une simple
Application console ConsoleApp
qui convertit un document HTML (document.html
) et le sauvegarde au format TIFF. Cette application peut être compilée et exécutée dans Docker. Pour créer un projet d’application console, suivez quelques étapes :
- Ouvrez un Visual Studio (Visual Studio 2022 est utilisé dans l’exemple), et à l’étape “Create a new project”, sélectionnez une
Console App C#
.
- Laissez le répertoire et les paramètres du projet de l’application console par défaut (comme dans l’exemple), ou indiquez les vôtres :
- Choisissez .NET 6.0 (Long-term support) dans le menu Framework.
- Ajoutez la prise en charge de Docker au projet et sélectionnez le système d’exploitation Linux cible.
Après avoir ajouté la prise en charge de Docker, un fichier Docker est créé avec le contenu par défaut.
Comment configurer un fichier Docker
En configurant correctement le fichier Docker, vous pouvez définir les étapes de construction d’une image Docker et créer un environnement conteneurisé qui inclut toutes les dépendances et configurations nécessaires à l’exécution de votre application.
- Voici le contenu du fichier Docker par défaut :
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"]
- Vous devez éditer le fichier Docker et installer libgdiplus, les bibliothèques et les polices nécessaires.
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 est un fichier texte qui contient un ensemble d’instructions utilisées pour construire une image Docker. Il peut être divisé en quatre blocs distincts : docker base image, l’image de construction Docker, docker publish image, et docker final image. Passons en revue les étapes d’un fichier Docker et leur signification :
- L’image de base docker définit l’image de base et installe les dépendances nécessaires pour gérer les images et les polices dans le conteneur.
- Le mot clé FROM nécessite un nom d’image de conteneur Docker entièrement qualifié. Dans la première ligne, l’image de base
mcr.microsoft.com/dotnet/runtime:6.0
est spécifiée. Cette image de base fournit l’environnement d’exécution pour les applications .NET. - La commande WORKDIR définit le répertoire de travail à l’intérieur du docker à
/app
. - Les commandes RUN mettent à jour les listes de paquets, installent les paquets nécessaires libgdiplus, libc6-dev, ttf-mscorefonts-installer et fontconfig, puis nettoient le cache des paquets.
- L’image docker build contient les instructions utilisées pour construire les applications .NET.
- La commande FROM spécifie l’image de base
mcr.microsoft.com/dotnet/sdk:6.0
. Le segmentdotnet
est le référentiel du conteneur, tandis que le segmentsdk
est le nom de l’image du conteneur docker. L’image inclut le SDK .NET 6.0, ce qui vous permet de créer votre application .NET. - L’instruction WORKDIR définit le répertoire de travail à l’intérieur du conteneur à
/src
. - La commande COPY copie le fichier de projet ConsoleApp.csproj du répertoire local
ConsoleApp/
vers le répertoire/src/ConsoleApp/
du conteneur. - La commande RUN effectue une restauration
dotnet
pour restaurer les paquets NuGet du projet. - La commande COPY demande à docker de copier le dossier spécifié sur votre ordinateur dans un dossier du conteneur docker –
/scr/
. - La commande RUN
dotnet build "ConsoleApp.csproj" -c Release -o /app/build
compile l’application .NET spécifiée dansConsoleApp.csproj
en utilisant la configurationRelease
et stocke la sortie de la compilation dans le répertoire/app/build
à l’intérieur du conteneur.
- L’image docker publish déclare l’application pour le déploiement.
- La ligne
FROM build AS publish
met en place un nouveau stage d’image docker nommépublish
basé sur le stagebuild
précédent. Cela indique que l’étapepublish
héritera de tous les fichiers, dépendances et configurations de l’étapebuild
. - La commande RUN exécute
dotnet publish
pour publier l’application dans la configurationRelease
, le répertoire de sortie étant/app/publish
.
- L’image docker final image exécute l’application au démarrage du conteneur docker.
- L’instruction FROM utilise l’étape
base
comme image de base. - La commande WORKDIR change le répertoire courant à l’intérieur du conteneur en
/app
. - La commande COPY demande au docker de copier les fichiers publiés depuis l’étape
publish
vers le répertoire courant de l’étapefinal
. - La commande ENTRYPOINT est utilisée pour lancer un fichier exécutable, qui est
ConsoleApp.dll
.
Ces quatre blocs du fichier Docker fonctionnent ensemble pour construire une image Docker en plusieurs étapes. Les étapes initiales de base et de construction sont utilisées pour installer les dépendances, restaurer les paquets et construire l’application. La publication suivante et les blocs finaux sont utilisés pour publier l’application en vue de son déploiement et de son exécution lorsque le conteneur démarre.
Exemple d’application console
Dans l’exemple, nous proposons d’utiliser un programme simple qui convertit un document HTML en format d’image 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}
Configurer l’application console et exécuter Aspose.HTML dans Docker
- Pour exécuter Aspose.HTML dans Docker, installez la dernière version d’Aspose.HTML et System.Drawing.Common 6.0 à partir de NuGet.
- Editez le projet ConsoleApp.csproj – ajoutez l’option InvariantGlobalization =
false
:
Le fichier suivant est un fichier de projet .NET qui définit les paramètres du projet, les dépendances et les fichiers supplémentaires nécessaires pour créer une application exécutable. <InvariantGlobalization>
est un élément supplémentaire qui désactive le comportement de globalisation invariante dans le projet. S’il vaut false, le projet utilisera le comportement de globalisation par défaut.
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>
- Définissez la propriété “Сopy to Output Directory” pour le fichier converti :
- Lorsque toutes les dépendances et propriétés requises sont ajoutées, exécutez la conversion HTML to TIFF pour Linux dans un conteneur Docker en cliquant sur le bouton vert.
Aide et soutien
Si vous avez besoin d’aide ou si vous avez des questions sur l’exécution d’Aspose.HTML dans Docker, veuillez contacter Free Support Forum ou Free Consulting. Nous serons heureux de vous aider !
Voir aussi