Compartilhar via


Personalizar o mapeamento de volume de 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

  • Área de Trabalho do Docker.
  • Visual Studio com o ASP.NET e desenvolvimento na Web, carga de trabalho de desenvolvimento do Azure e/ou carga de trabalho de desenvolvimento da área de trabalho do .NET instalada.

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

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 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, confira Personalizar imagens de contêiner para depuração.
Pasta de origem Contém o contexto de build que é passado nos comandos do Docker.
VSTools Contém ferramentas do Visual Studio que dão suporte ao trabalho com o contêiner, inclusive suporte para o depurador, a janela Contêineres, o tratamento de tokens do Azure, o agente de Recarga Dinâmica e o Distroless Helper.

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

Nota

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

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, confira Personalizar imagens de contêiner para depuração.
Pasta de origem Contém o contexto de build que é passado nos comandos do Docker.
VSTools Contém ferramentas do Visual Studio que dão suporte ao trabalho com o contêiner, inclusive suporte para o depurador, a janela Contêineres, o tratamento de tokens do Azure, o agente de Recarga Dinâmica e o Distroless Helper.

Para o .NET 8 e posterior, pontos de montagem adicionais na raiz e para o usuário do aplicativo que contenham segredos do usuário e o certificado HTTPS podem também estar presentes.

Nota

Visual Studio 17.10 e posterior Se você estiver usando o Mecanismo do Docker no Subsistema do Windows para Linux (WSL) sem o Docker Desktop, defina a variável VSCT_WslDaemon=1 de ambiente para que o Visual Studio use caminhos 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 Core, pode haver duas pastas adicionais para o certificado SSL e os segredos do usuário, que são explicados com mais detalhes em Usar SSL para aplicativos ASP.NET Core em contêineres

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êineres.

  2. Para especificar um novo argumento de linha de comando, adicione a propriedade MSBuild DockerfileRunArgumentse forneça a sintaxe -v ou --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 de linha de comando para as opções -v ou --mount.

Você pode montar outro volume especificando argumentos de linha de comando para o runtime do contêiner, docker.exe ou podman.exe.

  1. Abra launchSettings.json do projeto contêinerizado.

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

    "containerRunArguments": "-v myvolume:/scratch"
    

    Consulte a documentação do provedor de runtime de contêiner para a sintaxe de linha de comando das opções -v do Docker ou --mount, ou da opção -v do Podman e da opção --mount do Podman.