Introdução ao Docker no Visual Studio para MacGet started with Docker in Visual Studio for Mac

Com o Visual Studio para Mac, você pode facilmente criar, depurar e executar aplicativos ASP.NET Core em contêineres e publicá-los no Azure.With Visual Studio for Mac, you can easily build, debug, and run containerized ASP.NET Core apps and publish them to Azure.

Pré-requisitosPrerequisites

Instalação e configuraçãoInstallation and Setup

Para a instalação do Docker, revise e siga as informações em Instalar Docker Desktop para Mac.For Docker installation, review and follow the information at Install Docker Desktop for Mac.

Como criar um aplicativo Web ASP.NET Core e adicionando suporte ao DockerCreating an ASP.NET Core Web Application and Adding Docker Support

  1. Crie uma nova solução acessando Arquivo > Nova Solução.Create a new solution by going to File > New Solution.
  2. Em .NET Core > aplicativo , escolha o modelo de aplicativo Web :  criar um novo aplicativo ASP.netUnder .NET Core > App choose the Web Application template: Create a new ASP.NET application
  3. Selecione a estrutura de destino.Select the target framework. Neste exemplo, usaremos o .NET Core 2,2:  definir estrutura de destinoIn this example we will use .NET Core 2.2: Set target framework
  4. Insira os detalhes do projeto, como o nome (DockerDemo neste exemplo).Enter the project details, such as name (DockerDemo in this example). O projeto criado contém todos os princípios necessários para compilar e executar um site do ASP.NET Core.The created project contains all the basics you need to build and run an ASP.NET Core web site.
  5. Na Painel de Soluções, clique com o botão direito do mouse no projeto DockerDemo e selecione adicionar > adicionar suporte ao Docker:  Adicionar suporte ao DockerIn the Solution Pad, right click the DockerDemo project and select Add > Add Docker Support: Add docker support

O Visual Studio para Mac vai adicionar automaticamente um novo projeto à sua solução denominado docker-compose e um Dockerfile ao seu projeto existente.Visual Studio for Mac will automatically add a new project to your solution called docker-compose and add a Dockerfile to your existing project.

Arquivos de suporte ao docker gerados

Visão geral do DockerfileDockerfile Overview

Um Dockerfile é a receita para criar uma imagem final do Docker.A Dockerfile is the recipe for creating a final Docker image. Consulte a referência do Dockerfile para obter uma compreensão dos comandos dentro dele.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"]

O Dockerfile anterior baseia-se na imagem microsoft/aspnetcore e inclui instruções para modificar a imagem base criando o projeto e adicionando-o ao contêiner.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.

Observação

O Dockerfile padrão criado pelo Visual Studio para Mac expõe a porta 80 para tráfego HTTP.The default Dockerfile created by Visual Studio for Mac exposes Port 80 for HTTP traffic. Para habilitar o tráfego HTTPS, adicione Expose 443 ao Dockerfile.To enable HTTPS traffic, add Expose 443 to the Dockerfile.

DepuraçãoDebugging

Defina o projeto docker-compose como o Projeto de Inicialização e inicie a depuração (Executar > Iniciar Depuração).Select the docker-compose project as the Startup Project and start debugging (Run > Start Debugging). Isso compila, implanta e inicia o projeto ASP.NET em um contêiner.This will build, deploy and launch the ASP.NET project in a container.

Dica

Na primeira execução após a instalação do Docker Desktop, você pode receber o seguinte erro ao tentar depurar: 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

Adicione /usr/local/share/dotnet/sdk/NuGetFallbackFolder à guia Compartilhamento de Arquivos no Docker Desktop:Add /usr/local/share/dotnet/sdk/NuGetFallbackFolder to the File Sharing tab in Docker Desktop:

Como adicionar a pasta de NuGetFallbackFolder ao Compartilhamento de Arquivos

Quando a compilação estiver concluída, o aplicativo será iniciado no Safari:When the build is completed, the application will be launched in Safari:

Projeto padrão do Docker em execução no Safari

Observe que o contêiner estará escutando em um porta, http://localhost:32768 por exemplo, e essa porta pode variar.Note that the container will be listening on a port, http://localhost:32768 for example, and this port may vary.

Para ver a lista de contêineres em execução, use o comando docker ps no Terminal.To see the list of running containers, use the docker ps command in Terminal.

Observe a retransmissão de porta na captura de tela abaixo (em PORTS).Note the port relay in the screenshot below (under PORTS). Isso mostra que o contêiner está escutando na porta que vimos no Safari acima e retransmitindo solicitações para o servidor Web interno na porta 80 (conforme definido no 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). Da perspectiva do aplicativo, ele está escutando na porta 80:From the application's perspective, it is listening on port 80:

Lista de contêineres do Docker