Bien démarrer avec Docker dans Visual Studio pour MacGet started with Docker in Visual Studio for Mac

Avec Visual Studio pour Mac, vous pouvez facilement générer, déboguer et exécuter des applications ASP.NET Core dans des conteneurs et les publier sur Azure.With Visual Studio for Mac, you can easily build, debug, and run containerized ASP.NET Core apps and publish them to Azure.

PrérequisPrerequisites

Installation et configurationInstallation and Setup

Pour l’installation de Docker, passez en revue et suivez les instructions d’Installer Docker Desktop pour Mac.For Docker installation, review and follow the information at Install Docker Desktop for Mac.

Créer une application web ASP.NET Core et ajouter la prise en charge de DockerCreating an ASP.NET Core Web Application and Adding Docker Support

  1. Créez une solution en accédant à Fichier > Nouvelle solution.Create a new solution by going to File > New Solution.
  2. Sous application de > .net Core , choisissez le modèle application Web :  créer une application ASP.netUnder .NET Core > App choose the Web Application template: Create a new ASP.NET application
  3. Sélectionnez le framework cible.Select the target framework. Dans cet exemple, nous allons utiliser .NET Core 2,2 : définir la version cible de .NET  FrameworkIn this example we will use .NET Core 2.2: Set target framework
  4. Entrez les détails du projet, comme son nom ( DockerDemo dans cet exemple).Enter the project details, such as name ( DockerDemo in this example). Le projet créé contient tous les éléments de base pour générer et exécuter un site web ASP.NET Core.The created project contains all the basics you need to build and run an ASP.NET Core web site.
  5. Dans la fenêtre de la solution, cliquez avec le bouton droit sur le projet DockerDemo et sélectionnez ajouter > ajouter la prise en charge de l’ancrage :  Ajouter la prise en charge de l’ancrageIn the Solution Window, right click the DockerDemo project and select Add > Add Docker Support : Add docker support

Visual Studio pour Mac ajoute automatiquement un nouveau projet appelé docker-compose à votre solution et un Dockerfile à votre projet existant.Visual Studio for Mac will automatically add a new project to your solution called docker-compose and add a Dockerfile to your existing project.

Fichiers de prise en charge Docker générés

Vue d’ensemble du fichier DockerfileDockerfile Overview

Un fichier Docker, la recette permettant de créer une image Docker finale.A Dockerfile is the recipe for creating a final Docker image. Reportez-vous à la référence fichier dockerfile pour connaître les commandes qu’il contient.Refer to Dockerfile reference for an understanding of the commands within it.

FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY DockerDemo/DockerDemo.csproj DockerDemo/
RUN dotnet restore DockerDemo/DockerDemo.csproj
COPY . .
WORKDIR /src/DockerDemo
RUN dotnet build DockerDemo.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish DockerDemo.csproj -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "DockerDemo.dll"]

Le Dockerfile précédent est basé sur l’image microsoft/aspnetcore. Il comprend des instructions pour modifier l’image de base en générant votre projet et en l’ajoutant au conteneur.The preceding Dockerfile is based on the microsoft/aspnetcore image, and includes instructions for modifying the base image by building your project and adding it to the container.

Notes

Le Dockerfile créé par défaut par Visual Studio pour Mac expose le port 80 pour le trafic HTTP.The default Dockerfile created by Visual Studio for Mac exposes Port 80 for HTTP traffic. Pour activer le trafic HTTPS, ajoutez Expose 443 au Dockerfile.To enable HTTPS traffic, add Expose 443 to the Dockerfile.

DébogageDebugging

Sélectionnez le projet docker-compose comme projet de démarrage et commencez à déboguer ( Exécuter > Démarrer le débogage ).Select the docker-compose project as the Startup Project and start debugging ( Run > Start Debugging ). Cela générera, déploiera et lancera le projet ASP.NET dans un conteneur.This will build, deploy and launch the ASP.NET project in a container.

Conseil

Lors de la première exécution après l’installation de Docker Desktop, vous pourriez recevoir l’erreur suivante lorsque vous tentez de déboguer : Cannot start service dockerdemo: Mounts deniedOn the first run after installing Docker Desktop, you may receive the following error when trying to debug: Cannot start service dockerdemo: Mounts denied

Ajoutez /usr/local/share/dotnet/sdk/NuGetFallbackFolder à l’onglet File Sharing dans Docker Desktop :Add /usr/local/share/dotnet/sdk/NuGetFallbackFolder to the File Sharing tab in Docker Desktop:

Ajout du dossier NuGetFallbackFolder au partage de fichiers

Lorsque la génération est terminée, l’application est lancée dans Safari :When the build is completed, the application will be launched in Safari:

Exécution du projet Docker par défaut dans Safari

Notez que le conteneur écoute sur un port, http://localhost:32768 par exemple, et que ce port peut varier.Note that the container will be listening on a port, http://localhost:32768 for example, and this port may vary.

Pour afficher la liste des conteneurs en cours d’exécution, utilisez la commande docker ps dans un Terminal.To see the list of running containers, use the docker ps command in Terminal.

Notez le relais de port dans la capture d’écran ci-dessous (sous PORTS ).Note the port relay in the screenshot below (under PORTS ). Cela indique que le conteneur écoute sur le port que nous avons vu dans Safari ci-dessus et relaie les demandes vers le serveur web interne sur le port 80 (comme défini dans le Dockerfile).This shows that the container is listening on the port we saw in Safari above and relaying requests to the internal webserver on port 80 (as defined in the Dockerfile). Du point de vue de l’application, il écoute sur le port 80 :From the application's perspective, it is listening on port 80:

Liste de conteneurs Docker