Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Remarque
Ceci n’est pas la dernière version de cet article. Pour la version actuelle, consultez la version .NET 9 de cet article.
Avertissement
Cette version d’ASP.NET Core n’est plus prise en charge. Pour plus d’informations, consultez la stratégie de support .NET et .NET Core. Pour la version actuelle, consultez la version .NET 9 de cet article.
Important
Ces informations portent sur la préversion du produit, qui est susceptible d’être en grande partie modifié avant sa commercialisation. Microsoft n’offre aucune garantie, expresse ou implicite, concernant les informations fournies ici.
Pour la version actuelle, consultez la version .NET 9 de cet article.
Cet article explique comment exécuter une application ASP.NET Core dans des conteneurs Docker.
Windows Edition Home ne prend pas en charge Hyper-V, et Hyper-V est nécessaire pour Docker.
Consultez Containerize une application .NET avec dotnet publish pour plus d’informations sur une application .NET conteneurisée avec dotnet publish
.
Images Docker ASP.NET Core
Dans ce tutoriel, vous allez télécharger un exemple d’application ASP.NET Core pour l’exécuter dans des conteneurs Docker. L’exemple s’applique aux conteneurs Linux et Windows.
L’exemple de fichier Dockerfile utilise la fonctionnalité de génération multi-phase Docker pour générer et exécuter dans différents conteneurs. Les conteneurs de build et d’exécution sont créés à partir d’images fournies par Microsoft dans Docker Hub :
dotnet/sdk
L’exemple utilise cette image pour créer l’application. Elle contient le kit SDK .NET, qui inclut les outils en ligne de commande. Elle est optimisée pour le développement, le débogage et le test unitaire en local. Les outils installés pour le développement et la compilation rendent l’image relativement grande.
dotnet/aspnet
L’exemple utilise cette image pour exécuter l’application. Elle contient le runtime ASP.NET Core et les bibliothèques. Elle est optimisée pour l’exécution d’applications en production. Conçue pour la vitesse de déploiement et de démarrage de l’application, elle est relativement petite afin d’optimiser les performances réseau du Registre Docker vers l’hôte Docker. Seuls les binaires et le contenu nécessaires pour exécuter une application sont copiés dans le conteneur. Le contenu est prêt à s’exécuter, ce qui réduit le délai entre
docker run
et le démarrage de l’application. La compilation de code dynamique n’est pas nécessaire dans le modèle Docker.
Prérequis
Télécharger l’exemple d’application
Téléchargez l’exemple en clonant le référentiel Docker .NET :
git clone https://github.com/dotnet/dotnet-docker
Exécutez l’application localement.
Accédez au dossier du projet sur dotnet-docker/samples/aspnetapp/aspnetapp.
Exécutez la commande suivante pour générer et exécuter l’application localement :
dotnet run
Accédez à
http://localhost:<port>
dans un navigateur pour tester l’application.Appuyez sur Ctrl+C dans l’invite de commande pour arrêter l’application.
Exécuter dans un conteneur Linux ou un conteneur Windows
Pour s’exécuter dans un conteneur Linux, cliquez avec le bouton droit sur l’icône du client Docker de la barre d’état système, puis sélectionnez basculer vers des conteneurs Linux.
Pour s’exécuter dans un conteneur Windows, cliquez avec le bouton droit sur l’icône du client Docker de la barre d’état système, puis sélectionnez basculer vers les conteneurs Windows.
Accédez au dossier Dockerfile sur dotnet-docker/samples/aspnetapp.
Exécutez les commandes suivantes pour générer et exécuter l’exemple dans Docker :
docker build -t aspnetapp . docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
Voici le rôle des arguments de la commande
build
:- nommer l’image aspnetapp ;
- rechercher le fichier Dockerfile dans le dossier actif (le point final).
Voici le rôle des arguments de la commande run :
- allouer un pseudoterminal TTY et le laisser ouvert même s’il n’est pas attaché (même effet que
--interactive --tty
) ; - supprimer automatiquement le conteneur lorsqu’il se ferme ;
- Mappez
<port>
sur la machine locale avec le port 8080 dans le conteneur. - nommer le conteneur aspnetcore_sample ;
- spécifier l’image aspnetapp.
Accédez à
http://localhost:<port>
dans un navigateur pour tester l’application.
Effectuer manuellement le build et le déploiement
Dans certains scénarios, il peut être intéressant de déployer une application sur un conteneur en y copiant ses composants nécessaires à l’exécution. Cette section montre comment effectuer un déploiement manuel.
Accédez au dossier du projet sur dotnet-docker/samples/aspnetapp/aspnetapp.
Exécutez la commande dotnet publish :
dotnet publish -c Release -o published
Voici le rôle des arguments de la commande :
- Générez l’application en mode version finale (la valeur par défaut est le mode débogage).
- Créez les ressources dans le dossier intitulé publié.
Exécutez l’application.
Windows :
dotnet published\aspnetapp.dll
Linux :
dotnet published/aspnetapp.dll
Accédez à
http://localhost:<port>
pour afficher la page d’accueil.
Pour utiliser l’application publiée manuellement dans un conteneur Docker, créez un fichier Dockerfile et utilisez la docker build .
commande pour générer une image.
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Pour afficher la nouvelle image, utilisez la commande docker images
.
Le fichier Dockerfile
Voici le fichier Dockerfile utilisé par la docker build
commande que vous avez exécutée précédemment. Il utilise dotnet publish
comme nous l’avons fait dans cette section pour le build et le déploiement.
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:10.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Dans le fichier Dockerfile précédent, les *.csproj
fichiers sont copiés et restaurés en tant que couches distinctes. Lorsque la commande docker build
génère une image, elle utilise un cache intégré. Si les *.csproj
fichiers n’ont pas changé depuis la dernière exécution de la docker build
commande, la dotnet restore
commande n’a pas besoin d’être réexécuter. Au lieu de cela, le cache intégré pour la couche correspondante dotnet restore
est réutilisé. Pour plus d’informations, consultez les meilleures pratiques pour l’écriture de fichiers Dockerfiles.
Ressources supplémentaires
- Conteneuriser une application .NET avec dotnet publish
- Commande Docker build
- Commande docker run
- Exemple Docker ASP.NET Core (celui utilisé dans ce didacticiel.)
- Configurer ASP.NET Core pour travailler avec les serveurs proxy et les équilibreurs de charge
- Utilisation de Visual Studio Docker Tools
- Débogage avec Visual Studio Code
- GC utilisant Docker et de petits conteneurs
- System.IO.IOException : La limite d’utilisateur configurée (128) sur le nombre d’instances inotify a été atteinte
- Mises à jour des images Docker
Étapes suivantes
Le référentiel Git qui contient l’exemple d’application comporte également une documentation. Pour obtenir une vue d’ensemble des ressources disponibles dans le référentiel, consultez le fichier README. En particulier, découvrez comment implémenter le protocole HTTPS :
Images Docker ASP.NET Core
Dans ce tutoriel, vous allez télécharger un exemple d’application ASP.NET Core pour l’exécuter dans des conteneurs Docker. L’exemple s’applique aux conteneurs Linux et Windows.
L’exemple de fichier Dockerfile utilise la fonctionnalité de génération multi-phase Docker pour générer et exécuter dans différents conteneurs. Les conteneurs de build et d’exécution sont créés à partir d’images fournies par Microsoft dans Docker Hub :
dotnet/sdk
L’exemple utilise cette image pour créer l’application. Elle contient le kit SDK .NET, qui inclut les outils en ligne de commande. Elle est optimisée pour le développement, le débogage et le test unitaire en local. Les outils installés pour le développement et la compilation rendent l’image relativement grande.
dotnet/aspnet
L’exemple utilise cette image pour exécuter l’application. Elle contient le runtime ASP.NET Core et les bibliothèques. Elle est optimisée pour l’exécution d’applications en production. Conçue pour la vitesse de déploiement et de démarrage de l’application, elle est relativement petite afin d’optimiser les performances réseau du Registre Docker vers l’hôte Docker. Seuls les binaires et le contenu nécessaires pour exécuter une application sont copiés dans le conteneur. Le contenu est prêt à s’exécuter, ce qui réduit le délai entre
docker run
et le démarrage de l’application. La compilation de code dynamique n’est pas nécessaire dans le modèle Docker.
Prérequis
Télécharger l’exemple d’application
Téléchargez l’exemple en clonant le référentiel Docker .NET :
git clone https://github.com/dotnet/dotnet-docker
Exécutez l’application localement.
Accédez au dossier du projet sur dotnet-docker/samples/aspnetapp/aspnetapp.
Exécutez la commande suivante pour générer et exécuter l’application localement :
dotnet run
Accédez à
http://localhost:<port>
dans un navigateur pour tester l’application.Appuyez sur Ctrl+C dans l’invite de commande pour arrêter l’application.
Exécuter dans un conteneur Linux ou un conteneur Windows
Pour s’exécuter dans un conteneur Linux, cliquez avec le bouton droit sur l’icône du client Docker de la barre d’état système, puis sélectionnez basculer vers des conteneurs Linux.
Pour s’exécuter dans un conteneur Windows, cliquez avec le bouton droit sur l’icône du client Docker de la barre d’état système, puis sélectionnez basculer vers les conteneurs Windows.
Accédez au dossier Dockerfile sur dotnet-docker/samples/aspnetapp.
Exécutez les commandes suivantes pour générer et exécuter l’exemple dans Docker :
docker build -t aspnetapp . docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
Voici le rôle des arguments de la commande
build
:- nommer l’image aspnetapp ;
- rechercher le fichier Dockerfile dans le dossier actif (le point final).
Voici le rôle des arguments de la commande run :
- allouer un pseudoterminal TTY et le laisser ouvert même s’il n’est pas attaché (même effet que
--interactive --tty
) ; - supprimer automatiquement le conteneur lorsqu’il se ferme ;
- Mappez
<port>
sur la machine locale avec le port 8080 dans le conteneur. - nommer le conteneur aspnetcore_sample ;
- spécifier l’image aspnetapp.
Accédez à
http://localhost:<port>
dans un navigateur pour tester l’application.
Effectuer manuellement le build et le déploiement
Dans certains scénarios, il peut être intéressant de déployer une application sur un conteneur en y copiant ses composants nécessaires à l’exécution. Cette section montre comment effectuer un déploiement manuel.
Accédez au dossier du projet sur dotnet-docker/samples/aspnetapp/aspnetapp.
Exécutez la commande dotnet publish :
dotnet publish -c Release -o published
Voici le rôle des arguments de la commande :
- Générez l’application en mode version finale (la valeur par défaut est le mode débogage).
- Créez les ressources dans le dossier intitulé publié.
Exécutez l’application.
Windows :
dotnet published\aspnetapp.dll
Linux :
dotnet published/aspnetapp.dll
Accédez à
http://localhost:<port>
pour afficher la page d’accueil.
Pour utiliser l’application publiée manuellement dans un conteneur Docker, créez un fichier Dockerfile et utilisez la docker build .
commande pour générer une image.
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Pour afficher la nouvelle image, utilisez la commande docker images
.
Le fichier Dockerfile
Voici le fichier Dockerfile utilisé par la docker build
commande que vous avez exécutée précédemment. Il utilise dotnet publish
comme nous l’avons fait dans cette section pour le build et le déploiement.
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:9.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Dans le fichier Dockerfile précédent, les *.csproj
fichiers sont copiés et restaurés en tant que couches distinctes. Lorsque la commande docker build
génère une image, elle utilise un cache intégré. Si les fichiers *.csproj
n’ont pas changé depuis la dernière exécution de la commande docker build
, la commande dotnet restore
n’a pas besoin de s’exécuter à nouveau. Au lieu de cela, le cache intégré pour la couche correspondante dotnet restore
est réutilisé. Pour plus d’informations, consultez les meilleures pratiques pour l’écriture de fichiers Dockerfiles.
Ressources supplémentaires
- Conteneuriser une application .NET avec dotnet publish
- Commande Docker build
- Commande docker run
- Exemple Docker ASP.NET Core (celui utilisé dans ce didacticiel.)
- Configurer ASP.NET Core pour travailler avec les serveurs proxy et les équilibreurs de charge
- Utilisation de Visual Studio Docker Tools
- Débogage avec Visual Studio Code
- GC utilisant Docker et de petits conteneurs
- System.IO.IOException : La limite d’utilisateur configurée (128) sur le nombre d’instances inotify a été atteinte
- Mises à jour des images Docker
Étapes suivantes
Le référentiel Git qui contient l’exemple d’application comporte également une documentation. Pour obtenir une vue d’ensemble des ressources disponibles dans le référentiel, consultez le fichier README. En particulier, découvrez comment implémenter le protocole HTTPS :
Images Docker ASP.NET Core
Dans ce tutoriel, vous allez télécharger un exemple d’application ASP.NET Core pour l’exécuter dans des conteneurs Docker. L’exemple s’applique aux conteneurs Linux et Windows.
L’exemple de fichier Dockerfile utilise la fonctionnalité de génération multi-phase Docker pour générer et exécuter dans différents conteneurs. Les conteneurs de build et d’exécution sont créés à partir d’images fournies par Microsoft dans Docker Hub :
dotnet/sdk
L’exemple utilise cette image pour créer l’application. Elle contient le kit SDK .NET, qui inclut les outils en ligne de commande. Elle est optimisée pour le développement, le débogage et le test unitaire en local. Les outils installés pour le développement et la compilation rendent l’image relativement grande.
dotnet/aspnet
L’exemple utilise cette image pour exécuter l’application. Elle contient le runtime ASP.NET Core et les bibliothèques. Elle est optimisée pour l’exécution d’applications en production. Conçue pour la vitesse de déploiement et de démarrage de l’application, elle est relativement petite afin d’optimiser les performances réseau du Registre Docker vers l’hôte Docker. Seuls les binaires et le contenu nécessaires pour exécuter une application sont copiés dans le conteneur. Le contenu est prêt à s’exécuter, ce qui réduit le délai entre
docker run
et le démarrage de l’application. La compilation de code dynamique n’est pas nécessaire dans le modèle Docker.
Prérequis
Télécharger l’exemple d’application
Téléchargez l’exemple en clonant le référentiel Docker .NET :
git clone https://github.com/dotnet/dotnet-docker
Exécutez l’application localement.
Accédez au dossier du projet sur dotnet-docker/samples/aspnetapp/aspnetapp.
Exécutez la commande suivante pour générer et exécuter l’application localement :
dotnet run
Accédez à
http://localhost:<port>
dans un navigateur pour tester l’application.Appuyez sur Ctrl+C dans l’invite de commande pour arrêter l’application.
Exécuter dans un conteneur Linux ou un conteneur Windows
Pour s’exécuter dans un conteneur Linux, cliquez avec le bouton droit sur l’icône du client Docker de la barre d’état système, puis sélectionnez basculer vers des conteneurs Linux.
Pour s’exécuter dans un conteneur Windows, cliquez avec le bouton droit sur l’icône du client Docker de la barre d’état système, puis sélectionnez basculer vers les conteneurs Windows.
Accédez au dossier Dockerfile sur dotnet-docker/samples/aspnetapp.
Exécutez les commandes suivantes pour générer et exécuter l’exemple dans Docker :
docker build -t aspnetapp . docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
Voici le rôle des arguments de la commande
build
:- nommer l’image aspnetapp ;
- rechercher le fichier Dockerfile dans le dossier actif (le point final).
Voici le rôle des arguments de la commande run :
- allouer un pseudoterminal TTY et le laisser ouvert même s’il n’est pas attaché (même effet que
--interactive --tty
) ; - supprimer automatiquement le conteneur lorsqu’il se ferme ;
- Mappez
<port>
sur la machine locale avec le port 8080 dans le conteneur. - nommer le conteneur aspnetcore_sample ;
- spécifier l’image aspnetapp.
Accédez à
http://localhost:<port>
dans un navigateur pour tester l’application.
Effectuer manuellement le build et le déploiement
Dans certains scénarios, il peut être intéressant de déployer une application sur un conteneur en y copiant ses composants nécessaires à l’exécution. Cette section montre comment effectuer un déploiement manuel.
Accédez au dossier du projet sur dotnet-docker/samples/aspnetapp/aspnetapp.
Exécutez la commande dotnet publish :
dotnet publish -c Release -o published
Voici le rôle des arguments de la commande :
- Générez l’application en mode version finale (la valeur par défaut est le mode débogage).
- Créez les ressources dans le dossier intitulé publié.
Exécutez l’application.
Windows :
dotnet published\aspnetapp.dll
Linux :
dotnet published/aspnetapp.dll
Accédez à
http://localhost:<port>
pour afficher la page d’accueil.
Pour utiliser l’application publiée manuellement dans un conteneur Docker, créez un fichier Dockerfile et utilisez la docker build .
commande pour générer une image.
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Pour afficher la nouvelle image, utilisez la commande docker images
.
Le fichier Dockerfile
Voici le fichier Dockerfile utilisé par la docker build
commande que vous avez exécutée précédemment. Il utilise dotnet publish
comme nous l’avons fait dans cette section pour le build et le déploiement.
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Dans le fichier Dockerfile précédent, les *.csproj
fichiers sont copiés et restaurés en tant que couches distinctes. Lorsque la commande docker build
génère une image, elle utilise un cache intégré. Si les fichiers *.csproj
n’ont pas changé depuis la dernière exécution de la commande docker build
, la commande dotnet restore
n’a pas besoin de s’exécuter à nouveau. Au lieu de cela, le cache intégré pour la couche correspondante dotnet restore
est réutilisé. Pour plus d’informations, consultez les meilleures pratiques pour l’écriture de fichiers Dockerfiles.
Ressources supplémentaires
- Conteneuriser une application .NET avec dotnet publish
- Commande Docker build
- Commande docker run
- Exemple Docker ASP.NET Core (celui utilisé dans ce didacticiel.)
- Configurer ASP.NET Core pour travailler avec les serveurs proxy et les équilibreurs de charge
- Utilisation de Visual Studio Docker Tools
- Débogage avec Visual Studio Code
- GC utilisant Docker et de petits conteneurs
- System.IO.IOException : La limite d’utilisateur configurée (128) sur le nombre d’instances inotify a été atteinte
- Mises à jour des images Docker
Étapes suivantes
Le référentiel Git qui contient l’exemple d’application comporte également une documentation. Pour obtenir une vue d’ensemble des ressources disponibles dans le référentiel, consultez le fichier README. En particulier, découvrez comment implémenter le protocole HTTPS :
Images Docker ASP.NET Core
Dans ce tutoriel, vous allez télécharger un exemple d’application ASP.NET Core pour l’exécuter dans des conteneurs Docker. L’exemple s’applique aux conteneurs Linux et Windows.
L’exemple de fichier Dockerfile utilise la fonctionnalité de génération multi-phase Docker pour générer et exécuter dans différents conteneurs. Les conteneurs de build et d’exécution sont créés à partir d’images fournies par Microsoft dans Docker Hub :
dotnet/sdk
L’exemple utilise cette image pour créer l’application. Elle contient le kit SDK .NET, qui inclut les outils en ligne de commande. Elle est optimisée pour le développement, le débogage et le test unitaire en local. Les outils installés pour le développement et la compilation rendent l’image relativement grande.
dotnet/aspnet
L’exemple utilise cette image pour exécuter l’application. Elle contient le runtime ASP.NET Core et les bibliothèques. Elle est optimisée pour l’exécution d’applications en production. Conçue pour la vitesse de déploiement et de démarrage de l’application, elle est relativement petite afin d’optimiser les performances réseau du Registre Docker vers l’hôte Docker. Seuls les binaires et le contenu nécessaires pour exécuter une application sont copiés dans le conteneur. Le contenu est prêt à s’exécuter, ce qui réduit le délai entre
docker run
et le démarrage de l’application. La compilation de code dynamique n’est pas nécessaire dans le modèle Docker.
Prérequis
Télécharger l’exemple d’application
Téléchargez l’exemple en clonant le référentiel Docker .NET :
git clone https://github.com/dotnet/dotnet-docker
Exécutez l’application localement.
Accédez au dossier du projet sur dotnet-docker/samples/aspnetapp/aspnetapp.
Exécutez la commande suivante pour générer et exécuter l’application localement :
dotnet run
Accédez à
http://localhost:5000
dans un navigateur pour tester l’application.Appuyez sur Ctrl+C dans l’invite de commande pour arrêter l’application.
Exécuter dans un conteneur Linux ou un conteneur Windows
Pour s’exécuter dans un conteneur Linux, cliquez avec le bouton droit sur l’icône du client Docker de la barre d’état système, puis sélectionnez basculer vers des conteneurs Linux.
Pour s’exécuter dans un conteneur Windows, cliquez avec le bouton droit sur l’icône du client Docker de la barre d’état système, puis sélectionnez basculer vers les conteneurs Windows.
Accédez au dossier Dockerfile sur dotnet-docker/samples/aspnetapp.
Exécutez les commandes suivantes pour générer et exécuter l’exemple dans Docker :
docker build -t aspnetapp . docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
Voici le rôle des arguments de la commande
build
:- nommer l’image aspnetapp ;
- rechercher le fichier Dockerfile dans le dossier actif (le point final).
Voici le rôle des arguments de la commande run :
- allouer un pseudoterminal TTY et le laisser ouvert même s’il n’est pas attaché (même effet que
--interactive --tty
) ; - supprimer automatiquement le conteneur lorsqu’il se ferme ;
- mapper le port 5000 de l’ordinateur local avec le port 80 du conteneur ;
- nommer le conteneur aspnetcore_sample ;
- spécifier l’image aspnetapp.
Accédez à
http://localhost:5000
dans un navigateur pour tester l’application.
Effectuer manuellement le build et le déploiement
Dans certains scénarios, il peut être intéressant de déployer une application sur un conteneur en y copiant ses composants nécessaires à l’exécution. Cette section montre comment effectuer un déploiement manuel.
Accédez au dossier du projet sur dotnet-docker/samples/aspnetapp/aspnetapp.
Exécutez la commande dotnet publish :
dotnet publish -c Release -o published
Voici le rôle des arguments de la commande :
- Générez l’application en mode version finale (la valeur par défaut est le mode débogage).
- Créez les ressources dans le dossier intitulé publié.
Exécutez l’application.
Windows :
dotnet published\aspnetapp.dll
Linux :
dotnet published/aspnetapp.dll
Accédez à
http://localhost:5000
pour afficher la page d’accueil.
Pour utiliser l’application publiée manuellement dans un conteneur Docker, créez un fichier Dockerfile et utilisez la docker build .
commande pour générer une image.
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Pour afficher la nouvelle image, utilisez la commande docker images
.
Le fichier Dockerfile
Voici le fichier Dockerfile utilisé par la docker build
commande que vous avez exécutée précédemment. Il utilise dotnet publish
comme nous l’avons fait dans cette section pour le build et le déploiement.
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Dans le fichier Dockerfile précédent, les *.csproj
fichiers sont copiés et restaurés en tant que couches distinctes. Lorsque la commande docker build
génère une image, elle utilise un cache intégré. Si les fichiers *.csproj
n’ont pas changé depuis la dernière exécution de la commande docker build
, la commande dotnet restore
n’a pas besoin de s’exécuter à nouveau. Au lieu de cela, le cache intégré pour la couche correspondante dotnet restore
est réutilisé. Pour plus d’informations, consultez les meilleures pratiques pour l’écriture de fichiers Dockerfiles.
Ressources supplémentaires
- Conteneuriser une application .NET avec dotnet publish
- Commande Docker build
- Commande docker run
- Exemple Docker ASP.NET Core (celui utilisé dans ce didacticiel.)
- Configurer ASP.NET Core pour travailler avec les serveurs proxy et les équilibreurs de charge
- Utilisation de Visual Studio Docker Tools
- Débogage avec Visual Studio Code
- GC utilisant Docker et de petits conteneurs
- System.IO.IOException : La limite d’utilisateur configurée (128) sur le nombre d’instances inotify a été atteinte
- Mises à jour des images Docker
Étapes suivantes
Le référentiel Git qui contient l’exemple d’application comporte également une documentation. Pour obtenir une vue d’ensemble des ressources disponibles dans le référentiel, consultez le fichier README. En particulier, découvrez comment implémenter le protocole HTTPS :
Images Docker ASP.NET Core
Dans ce tutoriel, vous allez télécharger un exemple d’application ASP.NET Core pour l’exécuter dans des conteneurs Docker. L’exemple s’applique aux conteneurs Linux et Windows.
L’exemple de fichier Dockerfile utilise la fonctionnalité de génération multi-phase Docker pour générer et exécuter dans différents conteneurs. Les conteneurs de build et d’exécution sont créés à partir d’images fournies par Microsoft dans Docker Hub :
dotnet/sdk
L’exemple utilise cette image pour créer l’application. Elle contient le kit SDK .NET, qui inclut les outils en ligne de commande. Elle est optimisée pour le développement, le débogage et le test unitaire en local. Les outils installés pour le développement et la compilation rendent l’image relativement grande.
dotnet/core/sdk
L’exemple utilise cette image pour créer l’application. Elle contient le Kit SDK .NET Core, qui inclut les outils en ligne de commande. Elle est optimisée pour le développement, le débogage et le test unitaire en local. Les outils installés pour le développement et la compilation rendent l’image relativement grande.
dotnet/aspnet
L’exemple utilise cette image pour exécuter l’application. Elle contient le runtime ASP.NET Core et les bibliothèques. Elle est optimisée pour l’exécution d’applications en production. Conçue pour la vitesse de déploiement et de démarrage de l’application, elle est relativement petite afin d’optimiser les performances réseau du Registre Docker vers l’hôte Docker. Seuls les binaires et le contenu nécessaires pour exécuter une application sont copiés dans le conteneur. Le contenu est prêt à s’exécuter, ce qui réduit le délai entre
docker run
et le démarrage de l’application. La compilation de code dynamique n’est pas nécessaire dans le modèle Docker.
dotnet/core/aspnet
L’exemple utilise cette image pour exécuter l’application. Elle contient le runtime ASP.NET Core et les bibliothèques. Elle est optimisée pour l’exécution d’applications en production. Conçue pour la vitesse de déploiement et de démarrage de l’application, elle est relativement petite afin d’optimiser les performances réseau du Registre Docker vers l’hôte Docker. Seuls les binaires et le contenu nécessaires pour exécuter une application sont copiés dans le conteneur. Le contenu est prêt à s’exécuter, ce qui réduit le délai entre
docker run
et le démarrage de l’application. La compilation de code dynamique n’est pas nécessaire dans le modèle Docker.
Prérequis
Télécharger l’exemple d’application
Téléchargez l’exemple en clonant le référentiel Docker .NET :
git clone https://github.com/dotnet/dotnet-docker
Exécutez l’application localement.
Accédez au dossier du projet sur dotnet-docker/samples/aspnetapp/aspnetapp.
Exécutez la commande suivante pour générer et exécuter l’application localement :
dotnet run
Accédez à
http://localhost:5000
dans un navigateur pour tester l’application.Appuyez sur Ctrl+C dans l’invite de commande pour arrêter l’application.
Exécuter dans un conteneur Linux ou un conteneur Windows
Pour s’exécuter dans un conteneur Linux, cliquez avec le bouton droit sur l’icône du client Docker de la barre d’état système, puis sélectionnez basculer vers des conteneurs Linux.
Pour s’exécuter dans un conteneur Windows, cliquez avec le bouton droit sur l’icône du client Docker de la barre d’état système, puis sélectionnez basculer vers les conteneurs Windows.
Accédez au dossier Dockerfile sur dotnet-docker/samples/aspnetapp.
Exécutez les commandes suivantes pour générer et exécuter l’exemple dans Docker :
docker build -t aspnetapp . docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
Voici le rôle des arguments de la commande
build
:- nommer l’image aspnetapp ;
- rechercher le fichier Dockerfile dans le dossier actif (le point final).
Voici le rôle des arguments de la commande run :
- allouer un pseudoterminal TTY et le laisser ouvert même s’il n’est pas attaché (même effet que
--interactive --tty
) ; - supprimer automatiquement le conteneur lorsqu’il se ferme ;
- mapper le port 5000 de l’ordinateur local avec le port 80 du conteneur ;
- nommer le conteneur aspnetcore_sample ;
- spécifier l’image aspnetapp.
Accédez à
http://localhost:5000
dans un navigateur pour tester l’application.
Effectuer manuellement le build et le déploiement
Dans certains scénarios, il peut être intéressant de déployer une application sur un conteneur en y copiant ses composants nécessaires à l’exécution. Cette section montre comment effectuer un déploiement manuel.
Accédez au dossier du projet sur dotnet-docker/samples/aspnetapp/aspnetapp.
Exécutez la commande dotnet publish :
dotnet publish -c Release -o published
Voici le rôle des arguments de la commande :
- Générez l’application en mode version finale (la valeur par défaut est le mode débogage).
- Créez les ressources dans le dossier intitulé publié.
Exécutez l’application.
Windows :
dotnet published\aspnetapp.dll
Linux :
dotnet published/aspnetapp.dll
Accédez à
http://localhost:5000
pour afficher la page d’accueil.
Pour utiliser l’application publiée manuellement dans un conteneur Docker, créez un fichier Dockerfile et utilisez la docker build .
commande pour générer une image.
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Pour afficher la nouvelle image, utilisez la commande docker images
.
Le fichier Dockerfile
Voici le fichier Dockerfile utilisé par la docker build
commande que vous avez exécutée précédemment. Il utilise dotnet publish
comme nous l’avons fait dans cette section pour le build et le déploiement.
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Pour afficher la nouvelle image, utilisez la commande docker images
.
Le fichier Dockerfile
Voici le fichier Dockerfile utilisé par la docker build
commande que vous avez exécutée précédemment. Il utilise dotnet publish
comme nous l’avons fait dans cette section pour le build et le déploiement.
# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Dans le fichier Dockerfile précédent, les *.csproj
fichiers sont copiés et restaurés en tant que couches distinctes. Lorsque la commande docker build
génère une image, elle utilise un cache intégré. Si les fichiers *.csproj
n’ont pas changé depuis la dernière exécution de la commande docker build
, la commande dotnet restore
n’a pas besoin de s’exécuter à nouveau. Au lieu de cela, le cache intégré pour la couche correspondante dotnet restore
est réutilisé. Pour plus d’informations, consultez les meilleures pratiques pour l’écriture de fichiers Dockerfiles.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Le fichier Dockerfile
Voici le fichier Dockerfile utilisé par la docker build
commande que vous avez exécutée précédemment. Il utilise dotnet publish
comme nous l’avons fait dans cette section pour le build et le déploiement.
FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /app
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Comme indiqué dans le fichier Dockerfile précédent, les *.csproj
fichiers sont copiés et restaurés sous forme de couches distinctes. Lorsque la commande docker build
génère une image, elle utilise un cache intégré. Si les fichiers *.csproj
n’ont pas changé depuis la dernière exécution de la commande docker build
, la commande dotnet restore
n’a pas besoin de s’exécuter à nouveau. Au lieu de cela, le cache intégré pour la couche correspondante dotnet restore
est réutilisé. Pour plus d’informations, consultez les meilleures pratiques pour l’écriture de fichiers Dockerfiles.
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Le fichier Dockerfile
Voici le fichier Dockerfile utilisé par la docker build
commande que vous avez exécutée précédemment. Il utilise dotnet publish
comme nous l’avons fait dans cette section pour le build et le déploiement.
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /app
# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore
# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Dans le fichier Dockerfile précédent, les *.csproj
fichiers sont copiés et restaurés en tant que couches distinctes. Lorsque la commande docker build
génère une image, elle utilise un cache intégré. Si les fichiers *.csproj
n’ont pas changé depuis la dernière exécution de la commande docker build
, la commande dotnet restore
n’a pas besoin de s’exécuter à nouveau. Au lieu de cela, le cache intégré pour la couche correspondante dotnet restore
est réutilisé. Pour plus d’informations, consultez les meilleures pratiques pour l’écriture de fichiers Dockerfiles.
Ressources supplémentaires
- Conteneuriser une application .NET avec dotnet publish
- Commande Docker build
- Commande docker run
- Exemple Docker ASP.NET Core (celui utilisé dans ce didacticiel.)
- Configurer ASP.NET Core pour travailler avec les serveurs proxy et les équilibreurs de charge
- Utilisation de Visual Studio Docker Tools
- Débogage avec Visual Studio Code
- GC utilisant Docker et de petits conteneurs
- System.IO.IOException : La limite d’utilisateur configurée (128) sur le nombre d’instances inotify a été atteinte
Étapes suivantes
Le référentiel Git qui contient l’exemple d’application comporte également une documentation. Pour obtenir une vue d’ensemble des ressources disponibles dans le référentiel, consultez le fichier README. En particulier, découvrez comment implémenter le protocole HTTPS :