En tant que développeurs Web, nous avions l'habitude de trouver un hébergement approprié pour nos applications avec toutes les complications liées à leur déploiement et à leur maintenance. Mais nous vivons désormais dans une nouvelle ère dans laquelle les fournisseurs de cloud peuvent réaliser beaucoup de choses pour nous presque gratuitement. Quant aux développeurs .NET, Microsoft Azure semble le choix le plus naturel pour héberger des applications Web.
Docker est un autre élément technologique qui permet de faire abstraction de la plate-forme et de l'environnement dans lesquels vous exécutez votre application.
Dans cet article, je vais donner un guide détaillé sur la façon de créer une application Web ASP.NET Core simple, de créer une image Docker avec votre application et sur le moyen le plus simple de la déployer sur Azure. Au final, vous comprendrez bien comment déployer votre application web et la rendre accessible au monde entier.
Je vais utiliser JetBrains Rider pour le développement de cet article. Mais vous pouvez utiliser n’importe quel outil de votre choix.
Tout d'abord, vous devez créer un nouveau projet. Appelons cela simple « webapp ».
Après avoir créé un nouveau projet, il devrait ressembler à ceci :
Sans aucun changement dans le projet, nous allons nous concentrer sur le Dockerfile
. Modifiez-le comme dans l'exemple suivant :
FROM mcr.microsoft.com/dotnet/aspnet:6.0 as base WORKDIR /app EXPOSE 8080 ENV ASPNETCORE_URLS http://+:8080 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build COPY . /src WORKDIR /src RUN dotnet build "webapp.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "webapp.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "webapp.dll"]
Vous devez faire attention aux lignes EXPOSE 8080
et ENV ASPNETCORE_URLS http://+:8080
pour pouvoir vous connecter via HTTP au conteneur Docker.
Créez une image Docker à partir de la ligne de commande. Vous devez accéder au répertoire du projet webapp
et exécuter la commande suivante :
DOCKER_BUILDKIT=1 docker buildx build --platform linux/amd64 --tag drmoz/webapp:latest .
Je l'exécute sur Mac M1 et je dois spécifier explicitement le paramètre --platform
pour être compatible avec le déploiement Azure. Je dois également activer le Docker Buildkit en spécifiant le paramètre DOCKER_BUILDKIT=1
et en utilisant buildx
pour pouvoir construire une image pour une autre architecture.
Si vous l'exécutez sur la plate-forme Intel x86/x64, vous pouvez utiliser la commande docker build
sans avoir besoin de spécifier le paramètre --platform
et d'activer buildx
.
Vous pouvez baliser votre image différemment, mais comme je vais utiliser Docker Hub, je dois spécifier mon nom de compte : drmoz
dans le cadre de la balise d'image drmoz/webapp:latest
.
Lorsqu'une image est construite, vous pouvez vérifier si elle est présente dans le Docker en exécutant la commande suivante :
docker images
Il devrait être sur la liste :
REPOSITORY TAG IMAGE ID CREATED SIZE drmoz/webapp latest 0cfac748256b 37 minutes ago 216MB
Exécutons le conteneur Docker pour vérifier que l'image nouvellement créée fonctionne correctement. Exécutez la commande docker run
pour démarrer un conteneur :
docker run -p 5555:8080 drmoz/webapp:latest
Spécifiez le paramètre -p
pour mapper le port 8080
à l'intérieur du conteneur au port 5555
de votre ordinateur local. Spécifiez également le nom de l’image pour créer le conteneur. Dans mon cas, c'est drmoz/webapp:latest
.
Vous pouvez désormais naviguer dans votre navigateur http://localhost:5555
pour voir la page d'accueil de l'application Web ASP.NET Core.
Nous devons pousser une image vers le Docker Hub . Avant cela, vous devez vous inscrire sur le Docker Registry et créer un référentiel. Cliquez sur le bouton ' Créer un référentiel ' dans le coin droit de la page d'accueil.
Spécifiez le champ Repository Name
et conservez la visibilité du référentiel Public
.
Dans la ligne de commande, vous devez vous connecter au registre Docker Hub :
docker login
Après cela, vous pourrez transférer une image nouvellement créée vers le registre :
docker push drmoz/webapp:latest
Accédez au référentiel et vous verrez les informations sur l'image :
Nous sommes maintenant prêts à déployer notre application Web ASP.NET Core sur Azure. Connectons-nous au portail Azure et créons un nouveau groupe de ressources. Spécifiez le nom du groupe de ressources comme « webapp-rg » et cliquez sur le bouton « Réviser + créer ».
Sur l'écran suivant, cliquez simplement sur le bouton « Créer ».
Maintenant, nous pouvons créer une application Web. Accédez à la page « Créer une ressource » et recherchez WebApp. Cliquez sur le bouton « Créer ».
Vous devez spécifier le Resource Group
que nous avons créé précédemment. Spécifiez également un Name
unique pour l'application Web. Sélectionnez « Docker Container » dans le champ Publish
. Plus tard, nous pourrons spécifier quelle image Docker utiliser.
Sélectionnez les options appropriées dans la section Pricing plans
, mais je recommande d'utiliser un pneu F1 gratuit à des fins de test. Accédez à l'onglet Docker.
Sur cet onglet, sélectionnez « Docker Hub » dans le champ Image Source
. Sélectionnez « Public » dans le champ Access Type
et spécifiez la valeur Image and tag
avec le nom de l'image que nous avons transférée vers Docker Hub. Accédez à l'onglet « Réviser + créer ». Sur cet onglet, cliquez sur le bouton « Créer » :
Lorsque la nouvelle ressource est déployée, il vous sera demandé si vous souhaitez accéder à cette ressource ; fais-le c'est tout. Vous pourrez voir des informations concernant l'application Web.
Cliquez sur le bouton « Parcourir » pour ouvrir une application Web déployée. Si tout s'est bien passé, vous devriez voir la page d'accueil de l'application Web ASP.NET Core similaire à celle que vous avez vue dans votre navigateur en naviguant sur http://localhost:5555
.
Si vous accédez aux paramètres du « Centre de déploiement » et activez « Continuer le déploiement », vous pourrez redéployer votre image chaque fois que vous en pousserez une nouvelle vers le Docker Hub. De cette manière, vous pouvez apporter des modifications à votre code, le transmettre au Docker Hub avec une nouvelle image et voir les modifications en quelques minutes dans Azure.
Pour pouvoir consulter les journaux de déploiement et identifier les problèmes, vous devez activer l'enregistrement des journaux dans le système de fichiers dans le chapitre « Journaux App Service » comme suit :
Une fois cela fait, vous pouvez accéder au « Centre de déploiement » et consulter les journaux comme suit :
Si vous atteignez ce point, vous avez réussi à créer une application Web ASP.NET Core ; emballez-le dans l’image Docker et déployez-le sur Azure. De nos jours, la technologie facilite la vie et accélère le processus de développement. Vous pouvez voir avec quelle facilité vous pouvez déployer votre application sur le fournisseur de cloud et l'exposer au monde entier, effectuer des tests et voir le résultat de votre travail.
Vous pouvez désormais découvrir les détails des fournisseurs de cloud Azure à l'aide de la documentation Microsoft. Jetez également un œil à la documentation Docker pour une compréhension plus approfondie de cette technologie. J'espère que cela pourrait être utile.