Personalizar o mapeamento de volume do contêiner

Para que a depuração funcione em contêineres, o Visual Studio usa o mapeamento de volume para mapear as pastas do depurador e do NuGet no computador host. O mapeamento de volume é descrito na documentação do Docker aqui. Você pode exibir os mapeamentos de volume de um contêiner usando a janela Contêineres no Visual Studio.

Pré-requisitos

Montagens de volume em imagens de contêiner do Visual Studio

Estes são os volumes montados no seu contêiner:

Volume Descrição
Pasta de aplicativo Contém a pasta do projeto em que o Dockerfile está localizado.
Pastas de pacotes NuGet Contém os pacotes NuGet e as pastas de fallback que são lidas no arquivo obj{project}.csproj.nuget.g.props do projeto.
Depurador remoto Contém os bits necessários para executar o depurador no contêiner, dependendo do tipo de projeto. Consulte Personalizar imagens de contêiner para depuração.
Pasta de origem Contém o contexto de build que é passado para os comandos do Docker.

Esse são os volumes montados no seu contêiner. O que você vê em seus contêineres pode ser diferente dependendo da versão secundária do Visual Studio 2022 que você está usando.

Volume Descrição
Pasta de aplicativo Contém a pasta do projeto em que o Dockerfile está localizado.
Pastas de pacotes NuGet Contém os pacotes NuGet e as pastas de fallback que são lidas no arquivo obj{project}.csproj.nuget.g.props do projeto.
Depurador remoto Contém os bits necessários para executar o depurador no contêiner, dependendo do tipo de projeto. Para obter mais informações, consulte Personalizar imagens de contêiner para depuração.
Pasta de origem Contém o contexto de build que é passado para os comandos do Docker.
VSTools Contém ferramentas do Visual Studio que dão suporte ao trabalho com o contêiner, incluindo suporte para o depurador, a janela Contêineres, o tratamento de tokens do Azure, o agente de Recarga frequente e o Distroless Helper.

Para o .NET 8, também pode haver pontos de montagem adicionais na raiz e para o usuário do aplicativo que contêm segredos do usuário e o certificado HTTPS.

Observação

Visual Studio 17.10 Se estiver usando o Mecanismo do Docker no Subsistema do Windows para Linux (WSL) sem o Docker Desktop, defina a variável de ambiente VSCT_WslDaemon=1 para que o Visual Studio use caminhos do WSL ao criar montagens de volume. O pacote NuGet Microsoft.VisualStudio.Azure.Containers.Tools.Targets 1.20.0-Preview 1 também é necessário.

Para aplicativos Web ASP.NET principais, pode haver duas pastas adicionais para o certificado SSL e os segredos do usuário, o que é explicado com mais detalhes em Usar SSL para aplicativos conteinerizados ASP.NET Core

Montar um volume de contêiner

Você pode montar outro volume usando argumentos de linha de comando docker run.

  1. Abra o arquivo de projeto para o projeto em contêiner.

  2. Para especificar um novo argumento de linha de comando, adicione a propriedade MSBuild DockerfileRunArguments e forneça a -v ou a sintaxe --mount. Por exemplo, a sintaxe a seguir cria um volume myvolume e o monta no contêiner na pasta /scratch.

    <PropertyGroup>
       <DockerfileRunArguments>-v myvolume:/scratch</DockerfileRunArguments>
    </PropertyGroup>
    

    Consulte a documentação do Docker para obter a sintaxe da linha de comando para as opções -v ou --mount.