Introdução ao Docker no Visual Studio para Mac

Importante

O Visual Studio para Mac está programado para ser desativado em 31 de agosto de 2024, de acordo com a Política de Ciclo de Vida Moderna da Microsoft. Embora você possa continuar a trabalhar com o Visual Studio para Mac, há várias outras opções para desenvolvedores no Mac, como a versão prévia da nova extensão do Kit de Desenvolvimento em C# para VS Code.

Saiba mais sobre cronogramas e alternativas de suporte.

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 .NET Core > Aplicativo, escolha o modelo Aplicativo Web: Create a new ASP.NET application
  3. Selecione a estrutura de destino. Neste exemplo, usaremos o .NET Core 2.2: Set target framework
  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 da Solução, clique com o botão direito do mouse no projeto DockerDemo e selecione Adicionar > Adicionar Suporte ao Docker: 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.

Generated docker support files

Visão geral do Dockerfile

Um Dockerfile é a receita para criar uma imagem final do Docker. Consulte Referência do Dockerfile para compreender seus comandos.

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:

Adding the NuGetFallbackFolder folder to File Sharing

Quando a compilação estiver concluída, o aplicativo será iniciado no Safari:

Default Docker project running in 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:

Docker container list