Partilhar 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 o depurador e as pastas NuGet da máquina host. O mapeamento de volume é descrito na documentação do Docker aqui. Você pode exibir os mapeamentos de volume para um contêiner usando a janela Contêineres no Visual Studio.

Pré-requisitos

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

Montagem de volume em imagens de container do Visual Studio

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

Volume Descrição
da pasta App Contém a pasta do projeto onde o Dockerfile está localizado.
pastas de pacotes NuGet Contém os pacotes NuGet e as pastas de fallback que são lidas a partir do ficheiro obj{project}.csproj.nuget.g.props no 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 compilação que é passado para os comandos do Docker.
VSTools Contém ferramentas do Visual Studio que dão suporte ao trabalho com o container, incluindo suporte para o depurador, a janela Containers, gestão de tokens do Azure, o agente Hot Reload e o Auxiliar Distroless.

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

Observação

Se você estiver usando o Docker Engine no Windows Subsystem for 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.

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

Volume Descrição
da pasta App Contém a pasta do projeto onde o Dockerfile está localizado.
pastas de pacotes NuGet Contém os pacotes NuGet e as pastas de fallback que são lidas a partir do ficheiro obj{project}.csproj.nuget.g.props no 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 compilação que é passado para os comandos do Docker.
VSTools Contém ferramentas do Visual Studio que dão suporte ao trabalho com o container, incluindo suporte para o depurador, a janela Containers, gestão de tokens do Azure, o agente Hot Reload e o Auxiliar Distroless.

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

Observação

Visual Studio 17.10 e posterior Se você estiver usando o Docker Engine no Windows Subsystem for 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 aplicações web ASP.NET Core, pode haver duas pastas adicionais para o certificado SSL e as informações secretas do utilizador, o que é explicado com mais detalhes em Usar SSL para aplicações ASP.NET Core em contentores

Montar um volume de contêiner

Você pode montar outro volume usando os 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 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 a sintaxe da linha de comando das opções -v ou --mount.

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

  1. Abra launchSettings.json para o projeto conteinerizado.

  2. Para especificar um novo argumento de linha de comando, adicione o JSON containerRunArguments, e forneça -v ou --mount sintaxe. 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 tempo de execução do contêiner para obter a sintaxe da linha de comando para as opções Docker -v ou --mount , ou a opção Podman -v e a opção Podman --mount.