GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment exécuter une application .NET dans Docker

Docker est un service de conteneurisation, utilisé pour exécuter des applications dans des environnements isolés emballés avec toutes les dépendances et le code dont il a besoin pour fonctionner. Il peut exécuter toutes sortes d'applications, y compris des programmes basés sur .NET utilisant des images d'exécution fournies par Microsoft.

Dockeriser .NET

Microsoft fournit des images de base prédéfinies pour l'exécution d'applications .NET. Vous n'aurez pas besoin de gérer l'installation du runtime .NET ou du SDK dans votre conteneur Docker, car vous pouvez simplement étendre l'image de base de Microsoft pour la version de .NET utilisée par votre application.

À moins que vous ne prévoyiez de déployer des conteneurs Windows sur un serveur Windows, vous devrez utiliser .NET Core ou .NET 5. L'ancien runtime .NET Framework n'est pas multiplateforme et ne s'exécutera pas sur des conteneurs basés sur Linux.

Si Docker n'est pas installé sur votre machine de développement, vous devrez installer Docker Desktop pour avoir accès à la CLI. Si vous utilisez WSL sous Windows, vous devez activer le moteur basé sur WSL 2, qui offre de meilleures performances.

Pour tester les choses, nous allons créer une nouvelle application API ASP.NET. La même procédure générale s'appliquera à tout type d'application, car tout ce que Docker fait est d'exécuter une génération chaque fois que vous créez le conteneur et de démarrer votre application avec une commande de point d'entrée.

Créez un nouveau fichier appelé Dockerfile à la racine de votre projet, là où se trouve votre solution. Collez la configuration suivante :

DEPUIS mcr.microsoft.com/dotnet/core/sdk AS build-envWORKDIR /app# Copiez csproj et restoreCOPY *.csproj ./RUN dotnet restore# Copiez tout le reste et buildCOPY . ./RUN dotnet publish -o out# Construire l'image d'exécutionFROM mcr.microsoft.com/dotnet/core/runtimeWORKDIR /appCOPY --from=build-env /app/out .ENTRYPOINT ["dotnet", "DockerTest.dll"] 

Ce Dockerfile extrait l'image du SDK .NET Core pour effectuer la génération. Il copie le .csproj et restaure, puis copie tout le reste et exécute une construction. Ensuite, il crée une nouvelle image à partir de l'image d'exécution .NET et copie les artefacts de génération dessus.

Enfin, le point d'entrée est défini ici comme dotnet DockerTest.dll . Cela démarrera le serveur Web ASP.NET, bien que vous deviez peut-être modifier les paramètres de votre application ou spécifier une commande de point d'entrée entièrement différente.

Vous pouvez tester l'exécution de votre conteneur avec docker container run , en le passant dans l'ID du conteneur de build :

ID de conteneur d'exécution du conteneur docker

Pour une application ASP.NET, vous devrez ouvrir des ports en mappant un port sur l'hôte à un port sur le conteneur :

docker run -p 80:80 ID conteneur

Vous pouvez lire notre guide d'utilisation de Docker et Dockerfiles pour en savoir plus.


Docker
  1. Comment exécuter un programme dans un conteneur Docker ?

  2. Comment connecter des conteneurs Docker

  3. Comment exécuter MySQL dans un conteneur Docker

  4. Comment exécuter une commande sur un conteneur Docker en cours d'exécution

  5. Comment installer Docker et exécuter des conteneurs Docker dans Ubuntu

Comment exécuter Docker en tant qu'utilisateur non root sous Linux

Comment se connecter en SSH à un conteneur Docker et exécuter des commandes

Comment exécuter PHPMyAdmin dans un conteneur Docker

Comment exécuter Grafana dans un conteneur Docker

Comment exécuter Jenkins dans Docker à l'aide de Docker Compose avec des volumes

Comment exécuter des conteneurs Docker