Introdução ao Docker no Visual Studio para 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.

Pré-requisitos

Instalação e configuração

Para a instalação do Docker, revise e siga as informações em Instalar Docker Desktop para Mac.

Como criar um aplicativo Web ASP.NET Core e adicionando suporte ao Docker

  1. Crie uma nova solução acessando Arquivo > Nova Solução.
  2. Em Aplicativo de > .NET Core, escolha o modelo Aplicativo Web:  Criar um novo ASP.NET aplicativo
  3. Selecione a estrutura de destino. Neste exemplo, vamos usar o .NET Core 2.2:  Definir estrutura de destino
  4. Insira os detalhes do projeto, como o nome (DockerDemo neste exemplo). O projeto criado contém todos os princípios necessários para compilar e executar um site do ASP.NET Core.
  5. Na janela Solução, clique com o botão direito do mouse no projeto DockerDemo e selecione Adicionar > Adicionar Suporte ao Docker:  Adicionar suporte ao Docker

O Visual Studio para Mac vai adicionar automaticamente um novo projeto à sua solução denominado docker-compose e um Dockerfile ao seu projeto existente.

Arquivos de suporte ao docker gerados

Visão geral do Dockerfile

Um Dockerfile é a receita para criar uma imagem final do Docker. Consulte Referência do Dockerfile para entender os comandos dentro dela.

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch 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/build

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
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.

Observação

O Dockerfile padrão criado pelo Visual Studio para Mac expõe a porta 80 para tráfego HTTP. Para habilitar o tráfego HTTPS, adicione Expose 443 ao Dockerfile.

Depuração

Defina o projeto docker-compose como o Projeto de Inicialização e inicie a depuração (Executar > Iniciar Depuração). Isso compila, implanta e inicia o projeto ASP.NET em um contêiner.

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 denied

Adicione /usr/local/share/dotnet/sdk/NuGetFallbackFolder à guia Compartilhamento de Arquivos no 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:

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.

Para ver a lista de contêineres em execução, use o comando docker ps no Terminal.

Observe a retransmissão de porta na captura de tela abaixo (em 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). Da perspectiva do aplicativo, ele está escutando na porta 80:

Lista de contêineres do Docker