Getting Started with ASP.Net Core and Docker

Salut tout le monde, très souvent les débutants avec Docker rencontre des grands problèmes sur l’utilisation du DockerFile, ses commandes fondamentales. De plus un autre problème qui s’impose souvent pour les développeur .NET est d’empaqueter leur application ASP.Net Core dans une seule image, et comment les exécuter dans un conteneur, de plus ils ont des confusions sur le choix l’image de base à utiliser afin de construire une application ASP.Net Core. De ce fait dans ce post nous rendrons tout ça un peu plus clair.

Comment empaqueter l’application ASP.Net Core dans un conteneur?

Pour empaqueter une application Asp.Net Core dans un conteneur, il existe trois étapes:

  1. Créez votre projet ASP.Net Core
  2. Écrire un fichier Docker qui décrira la construction de votre image.
  3. Créez un conteneur qui rendra votre image vivante ou permettra l’exécution de votre image comme un processus unique.

1. Créez votre projet ASP.Net Core

La première chose à faire est de créer un projet. Pour ce faire, nous devons nous assurer que Dotnet Core est déjà installé sur votre ordinateur.

Cependant, dans cet exemple, nous allons créer un simple WebAPI ASP.NET Core, la même procédure pour les autres projets. Pour cela, exécutez ces commandes une après l’autre dans votre cmd:

mkdir dockerapp

cd dockerapp

dotnet new webapi

Après cela, vous aurez une API fonctionnelle, pour la tester, exécutez ces commandes:

dotnet build

dotnet run

Tapez cette adresse localhost: 5000 /api/values pour obtenir les valeurs de ValuesController.

2. Ecrire le Dockerfile

Avant de passer au travers du problème, nous devons d’abord savoir ce qu’est un fichier Dockerfile. En bref, Dockerfile est un fichier contenant une série d’instructions qui définissent la manière dont notre image sera construite. Commandes fréquentes

Commandes Description
FROM Cette commande spécifie l’image de base,

par exemple: microsoft/aspnetcore: 2.0

WORKDIR Modifie le répertoire de travail pour les instructions suivantes dans dockerfile
COPY Copie des fichiers de la source à la destination
RUN Exécute une commande directement dans le conteneur
EXPOSE Définir un port spécifique en interne du conteneur
VOLUME Habituellement utilisé pour mapper le répertoire physique de votre machine au répertoire logique du conteneur.
ENTRYPOINT Spécifie quelle application sera exécutée dans un conteneur créé à partir d’une image.

 

Ok, nous allons maintenant utiliser certaines de ces instructions pour écrire notre fichier Dockerfile, d’abord dans le dossier de notre projet WebAPI, créer un fichier nommé Dockerfile sans aucune extension.

IMPORTANT: lorsque nous écrivons un Dockerfile pour une application ASP.Net Core, nous devons d’abord savoir si nous voulons travailler dans un environnement de développement ou de déploiement.

Environnement de développement: Nous avons besoin d’une image de base contenant un compilateur et permettant la compilation directement dans le conteneur. Pour cela, nous utiliserons microsoft/aspnetcore-build téléchargeable directement à partir du DockerHub (référentiel Docker) en faisant un docker pull microsoft/aspnetcore-build.

Environnement de déploiement: Ici, nous n’avons pas besoin du compilateur, c’est qui nous pousse à premièrement compiler notre projet avant, intégrer tous les fichiers builder dans une image et utiliser une image de base légère contenant le .NET Core Runtime microsoft/aspnetcore afin exécuter notre application.

Dans ce cas, nous travaillerons dans l’environnement de développement un peu complexe par rapport à l’environnement de déploiement.

Copiez et collez toutes ces instructions dans votre fichier Docker.

#Environnement de developpement : Procédure

FROM microsoft/aspnetcore-build:latest AS build-env
WORKDIR /app

#copie le csproj and restaure toutes les dépendances du projet
COPY *.csproj ./
RUN dotnet restore

#Copie tout et ensuite build ou construit le projet
COPY . ./
RUN dotnet publish --configuration Release --output dist

#Environnement de déploiement : Procédure
#Build runtime image
FROM microsoft/aspnetcore:latest
WORKDIR /app
COPY --from=build-env /app/dist ./
EXPOSE 80/tcp
ENTRYPOINT [ "dotnet","dockerapp.dll" ]

Après cela, en type cmd

docker build . –t rootandadmin/dockerapp –f Dockerfile

Maintenant nous avons notre image et vérifier le type

docker images

3. Création du container dans docker

Nous avons maintenant notre image rootandadmin/dockerapp, mais cette image est morte, nous devons la rendre vivante pour cela nous devons créer un conteneur et y injecter notre image, il existe une différence entre une Image et un Conteneur,le conteneur est le processus qui contient l’image et l’exécute.

Ensuite, pour créer un conteneur à partir de notre image, tapez ceci:

docker create command –p 555:80 –name rootandadmin/dockerapp01 rootandadmin/dockerapp

docker start rootandadmin/dockerapp01

Tout est prêt vous pouvez maintenant y accéder directement dans le navigateur localhost: 555/api/values

Ok c’est fini pour aujourd’hui, en espérant que cette article vous a été utile.

About Dan Kyungu

Check Also

TaskCompletionSource:Create Async functions on based event APIs

Dans cette article qui est en quelque sorte une seconde partie de TaskCompletionSource Fundamentals, nous …

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *