Comment créer une image Docker d’une API Web .NET
L'un des principaux avantages de Docker est qu'il vous permet d'exécuter des projets logiciels sans avoir besoin de configurer des environnements de développement complexes.
Ce guide vous montrera comment créer une image Docker d'une API Web .NET 5. Vous pouvez ensuite utiliser l'image pour exécuter le code backend à partir de n'importe quel PC sur lequel Docker est installé et interagir avec l'API à partir de votre projet Web frontal ou d'une application mobile.
Création d'une API Web .NET 5
Docker et .NET 5 sont tous deux open source et multiplateformes, vous pouvez donc suivre ce guide que vous utilisiez macOS, Windows ou Linux.
Utilisez l'interface de ligne de commande dotnet pour créer un projet d'API Web ASP.NET avec la commande suivante :
dotnet new webapi -o aspdockerapi
La commande ci-dessus crée un projet nommé aspdockerapi et le place dans un dossier portant le même nom. En outre, l'application échafaude un contrôleur d'API avec des exemples de données de prévisions météorologiques.
Remarque : si vous n'avez pas installé .NET 5 sur votre PC, vous pouvez le télécharger à partir du lien ci-dessous.
Téléchargement : .NET 5 pour Windows, macOS et Linux
Une fois le projet créé, vous pouvez accéder au dossier racine du projet à l'aide de la commande suivante.
cd aspdockerapi
Vous pouvez exécuter et diffuser l'API Web à l'aide de la commande ci-dessous.
dotnet run
Par défaut, l'application sera servie sur le port 5001. Vous pouvez afficher les exemples de données de l'application dans votre navigateur sur l'URL suivante : https://localhost:5001/weatherforecast et les données des API doivent ressembler à ci-dessous.
Création d'instructions d'image Docker
Pour créer une image Docker, vous devez donner au moteur Docker quelques instructions sur la façon de la créer. Ces instructions doivent être placées dans un fichier nommé Dockerfile . Notez que le fichier n'a pas d'extension.
Utilisez la commande suivante pour créer le Dockerfile dans le dossier racine de votre projet d'application.
touch Dockerfile
Après avoir créé le Dockerfile , la structure de vos dossiers de projets doit être similaire à celle ci-dessous :
Maintenant, copiez et collez le code ci-dessous dans votre Dockerfile .
FROM mcr.microsoft.com/dotnet/aspnet:5.0-focal AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:5.0-focal AS build
WORKDIR /src
COPY ["aspdockerapi.csproj", "./"]
RUN dotnet restore "./aspdockerapi.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "aspdockerapi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "aspdockerapi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "aspdockerapi.dll"]
Remarque : Dans le Dockerfile ci-dessus, les noms de projet et de dll sont respectivement aspdockerapi.csproj et aspdockerapi.dll , si votre projet a un nom différent, assurez-vous de mettre à jour votre Dockerfile avec les noms corrects.
Comprendre les instructions Dockerfile
Le Dockerfile est principalement composé de mots-clés Dockerfile, qui par convention sont des mots en majuscules. Les mots-clés spécifient l'instruction à exécuter dans chaque couche de l'image Docker. Vous trouverez ci-dessous les principaux mots-clés Docker utilisés par le Dockerfile ci-dessus.
1. DE
Le mot-clé FROM spécifie l'image de base sur laquelle nous voulons que notre image soit construite. Dans le Dockerfile ci-dessus, l'image de base initiale est une image .NET 5 de Microsoft. L'image de base .NET 5 contient les composants nécessaires à l'exécution de l'application.
2. WORKDIR
WORKDIR définit le répertoire de travail ou le contexte à l'intérieur de l'image. Dans cet exemple, le répertoire /app est affecté comme répertoire de travail racine par défaut à l'aide de l'instruction suivante WORKDIR /app .
3. COPIER
Le mot-clé COPY copie simplement le contenu d'un dossier et le place dans un autre. Dans cet exemple, il est initialement utilisé pour copier le fichier principal du projet, c'est-à-dire aspdockerapi . csproj dans le répertoire de travail des images.
4. COURIR
Le mot-clé RUN est utilisé pour exécuter une commande Linux spécifique dans une image Docker. Dans le Dockerfile ci-dessus, la commande RUN est utilisée pour restaurer les dépendances, générer le projet ASP.NET et publier le projet.
5. CMD
Le mot clé CMD est un peu similaire au mot clé RUN décrit ci-dessus. Il est également utilisé pour exécuter une commande Linux, mais contrairement au mot-clé RUN qui exécute des commandes pour créer l'image, le mot-clé CMD est utilisé pour exécuter des commandes Linux au démarrage de l'image, dans une instance de conteneur.
6.EXPOSER
Le mot-clé EXPOSE est utilisé pour exposer un port à l'intérieur de l'image Docker au monde extérieur. Dans ce cas, l'image expose le port 80, qui est utilisé pour exposer l'API lors de l'exécution du conteneur Docker.
Construire l'image Docker
Pour créer l'image Docker basée sur le Dockerfile, exécutez simplement la commande suivante dans le dossier racine du projet, c'est-à-dire là où le Dockerfile est placé.
docker build -t dockerwebapi -f Dockerfile .
La commande ci-dessus balise l'image Docker avec le nom dockerwebapi et spécifie également que les instructions pour créer cette image se trouvent dans le Dockerfile .
Une fois la création de l'image terminée, vous pouvez vérifier si elle est répertoriée en tant qu'image Docker locale à l'aide de la commande suivante :
docker images
La sortie de la commande ci-dessus doit être similaire à celle ci-dessous, et l'image ( dockerwebapi ) apparaît sur la première ligne dans ce cas.
Si Docker n'est pas installé sur votre PC, voici comment installer docker sur Ubuntu Linux , sinon utilisez le lien ci-dessous pour télécharger et installer Docker.
Télécharger : Guide de téléchargement et d'installation de Docker
Exécuter l'image Docker
Pour exécuter l'image Docker nouvellement créée, utilisez la commande suivante. L'option -ti spécifie que l'image doit être exécutée en mode terminal interactif, et –rm spécifie que le conteneur doit être supprimé immédiatement après sa fermeture.
docker run -ti --rm -p 8080:80 dockerwebapi
En outre, la commande spécifie que le conteneur Docker doit s'exécuter sur le port HTTP 8080, qui correspond au port 80 à l'intérieur du conteneur.
Accédez à l'URL : http://localhost:8080/WeatherForecast dans votre navigateur et vous trouverez vos données API servies à partir de l'instance Docker que vous exécutez.
Pourquoi utiliser Docker ?
Ce guide vous a montré comment créer une image Docker d'une API Web .NET 5.
Avec Docker, vous pouvez automatiser le déploiement de vos applications, simplifier la configuration des environnements de développement logiciel et faciliter la collaboration avec d'autres ingénieurs logiciels.
Docker offre également plusieurs avantages par rapport aux autres technologies de virtualisation, c'est pourquoi vous devriez probablement envisager de l'utiliser dans vos projets d'ingénierie logicielle.