Logo C #

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 à l'aide d'images d'exécution fournies par Microsoft.

Dockerizing .NET

Microsoft fournit des images de base prédéfinies pour exécuter des applications .NET. Vous n'avez 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 à la version de .NET utilisée par votre application.

Microsoft .NET Core

Sauf si vous prévoyez de déployer Conteneurs Windows sur un serveur Windows, vous devrez utiliser .NET Core ou .NET 5. L'ancien environnement d'exécution .NET Framework n'est pas multiplateforme et ne fonctionnera pas sur les conteneurs Linux.

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

Si vous utilisez WSL sous Windows, activez le moteur basé sur WSL 2

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 fait Docker est d'exécuter une compilation chaque fois que vous construisez le conteneur et de démarrer votre application avec une commande entrypoint.

Créer une nouvelle application API ASP.NET

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

DE mcr.microsoft.com/dotnet/core/sdk AS build-env
WORKDIR / application

# Copiez csproj et restaurez
COPY * .csproj ./
Exécuter la restauration dotnet

# Copiez tout le reste et construisez
COPIE . ./
RUN dotnet publish -o out

# Construire une image d'exécution
DE mcr.microsoft.com/dotnet/core/runtime
WORKDIR / application
COPY --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 over et restaure, puis copie tout le reste et exécute une construction. Ensuite, il crée une nouvelle image à partir de l'image .NET Runtime et copie les artefacts de génération.

Enfin, le point d'entrée est défini ici comme dotnet DockerTest.dll. Cela démarrera le serveur Web ASP.NET, même si vous devrez 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 exécution du conteneur Docker, en le passant dans l'ID du conteneur de construction:

conteneur docker run containerid

Exécutez votre conteneur avec le conteneur Docker, en le passant dans l'ID du conteneur de construction

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 containerid

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

//]]>