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
- Docker Desktop
- O Visual Studio 2019 ou posterior com Desenvolvimento para a Web, a carga de trabalho das Ferramentas do Azure e/ou a carga de trabalho de Desenvolvimento para área de trabalho do .NET instalada
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
.
Abra o arquivo de projeto para o projeto em contêiner.
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 volumemyvolume
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.