Un moyen simple d’intégrer des rapports dans des applications Linux à l’aide de Docker

Telerik Reporting a récemment supprimé toute dépendance aux bibliothèques Windows uniquement, vous permettant d’héberger vos applications de production dans des environnements Linux légers et économiques. Avec Docker, ce processus est encore plus simple à réaliser.
Pourquoi Linux ?
Il existe de nombreuses bonnes raisons pour lesquelles vous souhaiterez peut-être déployer votre progression de production Reportage Telerik application sous Linux. Linux fonctionne très rapidement et le système d’exploitation peut être personnalisé pour répondre aux besoins de l’application. Linux est facile à mettre à niveau, facile à entretenir et utilise moins de ressources pour fonctionner qu’un système d’exploitation Windows. De plus, l’hébergement cloud basé sur Linux est souvent beaucoup plus rentable que son équivalent Windows pour la même puissance de traitement.
La plupart des développeurs .NET préfèrent travailler avec des outils familiers sous Windows, tels que Visual Studio. La création d’applications sous Linux nécessitait autrefois l’apprentissage d’un éditeur maladroit tel que vi et la maîtrise des subtilités du shell Bash. Aujourd’hui, avec l’avènement du sous-système Windows pour Linux (WSL2) et des outils innovants comme Visual Studio Code, vous pouvez combler le fossé entre Windows et Linux.
En utilisant le code Visual Studio, vous pouvez conserver la plupart des optimiseurs de performances auxquels vous êtes habitué, travailler dans un système d’exploitation Windows et également accéder à un puissant terminal distant vous connectant à votre instance Linux exécutée localement dans WSL2. C’est vraiment le meilleur des deux mondes !
Hébergement direct vs Docker
Avec Nginx
Vous pouvez toujours choisir de renoncer à Docker et d’héberger votre application directement dans une installation Linux telle que RedHat ou Ubuntu. Généralement, cela nécessite plus de configuration mais peut être utile si vous souhaitez utiliser d’autres outils et services dans la même instance. Des outils natifs comme Nginx vous permettent d’héberger directement sous Linux. Comme tout système d’exploitation, vous devrez gérer les mises à niveau, gérer les changements de version et résoudre les conflits. Il s’agit d’une alternative extrêmement puissante, avec une courbe d’apprentissage abrupte.
Avec Docker
En utilisant Docker, vous pouvez masquer tous les détails de la configuration du système d’exploitation. Vos applications sont construites sur l’une d’une série d’images de base préconfigurées. Ces images sont disponibles dans une variété de saveurs. Certains sont conçus pour le débogage et disposent d’outils supplémentaires pour ces tâches. Certains sont optimisés pour la production et ne contiennent que le minimum de packages nécessaires pour cette tâche. Certains sont même préconfigurés pour être utilisés avec des équilibreurs de charge. Cela vous permet de choisir, de modifier et d’expérimenter l’hébergement sur différentes images de base en modifiant une seule ligne de code dans votre Dockerfile (nous en parlerons plus tard).
Vous gagnez également en portabilité avec Docker, vous permettant de déplacer vos applications de serveur en serveur, sur site vers le cloud en quelques clics seulement. Les intégrations avec les pipelines Git et CI/CD vous permettent en outre de vous concentrer sur l’application elle-même plutôt que sur les détails de l’hébergement.
Suivez-moi ci-dessous pour créer et lancer une application Web ASP.NET basée sur Telerik Reporting.
Commencer
Conditions préalables
Construire votre application
Suivez les instructions ci-dessous pour créer une nouvelle application Web et la tester.
- Créez un nouveau dossier pour votre application dans un endroit pratique nommé LinuxDockerBlog.
- Ouvrez Windows PowerShell et accédez à ce dossier.
- Exécutez les commandes ci-dessous pour créer une nouvelle application Web et ouvrez-la dans Visual Studio Code.
dotnet new webapp -o LinuxDockerBlog
code -r LinuxDockerBlog
- Votre application devrait maintenant être ouverte dans Visual Studio Code. Sélectionner Exécuter > Exécuter sans débogage ou appuyez sur Ctrl+F5 pour lancer l’application Web. (Si on vous demande de sélectionner un débogueur, choisissez C#/Configuration par défaut.)
L’exemple d’application Web se lancera et vous verrez ce qui suit dans une nouvelle fenêtre :
Ajout du service REST de reporting Telerik
Ensuite, nous devrons ajouter les bibliothèques Telerik Reporting et le code de support à l’application. Cela mettra en place le service REST Telerik Reporting, qui est le moteur Cadillac de l’architecture Telerik Reporting.
Tout d’abord, vous devrez configurer l’accès au Flux NuGet privé Telerik pour accéder aux bibliothèques. Pour ce faire, vous souhaiterez vérifier si vous avez le serveur Telerik NuGet dans la liste des sources de votre package :
- Ouvrez une fenêtre de terminal à partir de Terminal > Nouveau terminal
- Exécutez la commande suivante :
dotnet nuget list source
- Si vous ne voyez pas nuget.telerik.com… c’est une solution rapide. Exécutez la commande suivante (après avoir remplacé les espaces réservés par vos informations d’identification) :
dotnet nuget add source "Telerik"
--source "[https://nuget.telerik.com/v3/index.json](https://nuget.telerik.com/v3/index.json)" --username 'api-key'
--password '<PASTE YOUR TELERIK KEY HERE>' --store-password-in-clear-text
- Ajoutez les trois bibliothèques suivantes avec cette commande :
dotnet add package
<PACKAGE_NAME>
- Telerik.Reporting.Services.AspNetCore (ou Telerik.Reporting.Services.AspNetCore.Trial)
- Telerik.Reporting.OpenXmlRendering (ou Telerik.Reporting.OpenXmlRendering.Trial)
- Telerik.Dessin.Skia
- Ajoutez NewtonsoftJson à l’objet Builder dans Programme.cs:
builder.Services.AddRazorPages().AddNewtonsoftJson();
- Ajoutez l’objet de configuration ci-dessous au générateur.
builder.Services.TryAddSingleton<IReportServiceConfiguration>(sp =>
new ReportServiceConfiguration
{
ReportingEngineConfiguration = sp.GetService<IConfiguration>(),
HostAppId = "ReportingNet6",
Storage = new FileStorage(),
ReportSourceResolver = new UriReportSourceResolver(System.IO.Path.Combine(sp.GetService<IWebHostEnvironment>().ContentRootPath, "Reports"))
});
- Configurez les points de terminaison en ajoutant le code ci-dessous. Assurez-vous de l’ajouter après le
UseRouting()
appel.
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
- Ajoutez ensuite un dossier Controllers à votre projet.
- Créez un nouveau fichier nommé ReportsController.cs dans le dossier Contrôleurs/.
- Remplacez le contenu de ReportsController.cs par le code ci-dessous :
namespace LinuxDockerBlog.Controllers
{
using System.Net;
using System.Net.Mail;
using Microsoft.AspNetCore.Mvc;
using Telerik.Reporting.Services;
using Telerik.Reporting.Services.AspNetCore;
[Route("api/[controller]")]
[ApiController]
public class ReportsController : ReportsControllerBase
{
public ReportsController(IReportServiceConfiguration reportServiceConfiguration)
: base(reportServiceConfiguration)
{
}
protected override HttpStatusCode SendMailMessage(MailMessage mailMessage)
{
throw new System.NotImplementedException("This method should be implemented in order to send mail messages");
}
}
}
- Testez votre application en la lançant avec Ctrl+F5.
- Accédez à
_http://localhost:<port>/api/reports/formats
_.
Si tout fonctionne comme prévu, vous devriez voir une sortie JSON des formats de rendu disponibles.
Écrire un fichier Docker
Un Dockerfile est la recette qui indique à Docker comment créer votre application Web dans une image. Il s’agit d’un fichier texte contenant des instructions sur la façon de créer l’image. Pour des informations complètes sur la façon d’écrire un Dockerfile personnalisé, reportez-vous au Écrire un document Dockerfile.
- Créez un fichier appelé Dockerfile à la racine de votre projet.
- Copiez les instructions ci-dessous dans le Dockerfile :
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 8080
RUN apt-get update
RUN apt-get install -y libfreetype6
RUN apt-get install -y libfontconfig1
#Stage 1
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 8080
RUN apt-get update
RUN apt-get install -y libfreetype6
RUN apt-get install -y libfontconfig1
#Stage 2
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY . ./LinuxDockerBlog/
ARG TelerikNugetServerApiKey
ENV TelerikNugetServer_API_KEY $TelerikNugetServerApiKey
RUN dotnet restore ./LinuxDockerBlog/LinuxDockerBlog.csproj
WORKDIR /src/LinuxDockerBlog
RUN dotnet publish LinuxDockerBlog.csproj -c release -o /app --no-restore
# Stage 3
FROM mcr.microsoft.com/dotnet/aspnet:8.0
EXPOSE 8080
WORKDIR /app
COPY --from=build /app .
USER $APP_UID
ENTRYPOINT ["./LinuxDockerBlog"]
Il s’agit d’une construction en plusieurs étapes. Notez qu’à l’étape 1, nous ajoutons des bibliothèques supplémentaires dont Telerik Reporting aura besoin pour fonctionner sous Linux et qui ne font pas partie de l’image de base standard.
Dans la deuxième étape, nous copions le fichier de l’application Web du dossier local vers un dossier de l’image appelé LinuxDockerBlog avec l’instruction COPY.
Nous définissons également une variable d’environnement en utilisant ENV, cette valeur est transmise depuis la ligne de commande en tant qu’argument de construction du docker ARG
. Cette variable d’environnement peut être utilisée pour transmettre des informations telles qu’une clé API pour NuGet.
Dans la dernière étape, la sortie du _RUN dotnet publish_
la commande est copiée dans le /app/
dossier dans l’image. Le EXPOSE
L’instruction indique à l’image de rendre l’application disponible via le port 8080 d’un conteneur en cours d’exécution. Le ENTRYPOINT
L’instruction indique l’emplacement de l’exécutable par défaut.
Construire une image
Dans Windows PowerShell, accédez au dossier du projet contenant le Dockerfile et créez l’image à l’aide de la commande suivante.
Notez le « ». à la fin? Cela indique à la commande d’utiliser le répertoire actuel pour y rechercher un Dockerfile.
docker build -t linuxdockerblog .
-or-
docker build -t linuxdockerblog --build-arg TelerikNugetServerApiKey=<YOUR_API_KEY> .
Vous devrez créer un fichier nuget.config pour vous authentifier auprès du flux Telerik Private NuGet. Voir le documents pour obtenir de l’aide sur la création de ce fichier de configuration.
Vous pouvez maintenant vérifier que l’image a été créée à l’aide de la commande suivante :
docker images
Vous devriez voir quelque chose de similaire à ceci :
Créer un conteneur
Maintenant qu’une image a été créée, vous pouvez l’exécuter dans un conteneur. Dans votre Windows PowerShell, exécutez la commande suivante :
docker run -it --rm -p 5123:8080 --name linux_reporting linuxdockerblog
- Le
_-it
Les options _ permettent une interaction si vous devez saisir un mot de passe. - Le
_--rm
L’option _ supprimera le conteneur créé lorsque vous arrêterez le processus. (C’est idéal pour le débogage et les tests. Si vous ne souhaitez pas que le conteneur s’arrête lorsque vous fermez le terminal, utilisez_-d
_ plutôt.) - Le
_-p
L’option _ mappe un port hôte (votre ordinateur) au port exposé du conteneur :-p HOST_PORT:CONTAINER_PORT
. Puisque nous savons que nous avons exposé le port 8080, nous pouvons choisir n’importe quel port hôte disponible et le mapper sur 8080. C’est le port que vous utiliserez pour accéder à l’application.
Vous pouvez maintenant tester votre conteneur en accédant au port sur localhost, par exemple : http://localhost:5123/.
Vous pouvez ouvrir Docker Desktop pour voir le conteneur et les images que vous avez créées.
Conclusion
Telerik Reporting est un excellent candidat pour une utilisation dans l’hébergement Linux en raison de la récente refactorisation pour utiliser les bibliothèques SkiaSharp. Combiné à la puissance de Docker, vous pouvez facilement créer des applications Web avec des rapports intégrés pour Linux et les exécuter dans un conteneur léger.
Cette même image peut être exécutée partout où Docker est fourni, éliminant ainsi toute incertitude liée à l’hébergement. Cette approche simple vous offre une solution simple, portable et réutilisable pour héberger vos applications sous Linux à la fois localement et dans le cloud.
Nouveau sur Telerik Reporting ? Essayez-le gratuitement pendant 30 jours !
Source link