Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Visão geral
Meta: Instalar o Proxy de Desenvolvimento em um contêiner de desenvolvimento ou GitHub codespaces
Tempo: 10 minutos
Pré-requisitos: Um projeto com umdevcontainer.jsonarquivo, Docker ou codespaces de GitHub
Se você desenvolver em um contêiner de desenvolvimento ou em GitHub Codespaces, poderá instalar o Dev Proxy usando o Dev Proxy Dev Container Feature. O recurso instala o Dev Proxy no contêiner e, depois que o contêiner é criado, gera um certificado raiz do Dev Proxy exclusivo para o contêiner e confia nele. Você não precisa seguir as etapas da primeira execução para confiar no certificado por conta própria.
Adicionar o Recurso de Proxy de Desenvolvimento ao seu contêiner de desenvolvimento
Para instalar o Dev Proxy no contêiner de desenvolvimento, adicione o Dev Proxy Feature à seção features do arquivo .devcontainer/devcontainer.json:
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/dotnet/dev-proxy/dev-proxy:1": {}
}
}
Reconstrua o contêiner ou crie um novo codespace para aplicar a alteração. Depois que o contêiner for iniciado, verifique se o Dev Proxy está instalado:
devproxy --version
Note
O recurso é versionado separadamente do Dev Proxy.
ghcr.io/dotnet/dev-proxy/dev-proxy:1 refere-se à versão 1 da Funcionalidade. Para escolher qual versão do Dev Proxy instalar, use a opção version.
Configurar o recurso
O Recurso dá suporte às seguintes opções:
| Opção | Description | Tipo | Default |
|---|---|---|---|
version |
Versão do Proxy de Desenvolvimento a ser instalada: latest, betaou uma versão específica como 4.0.0 ou v4.0.0. |
cadeia | latest |
trustCertificate |
Depois que o contêiner for criado, gere um certificado raiz do Proxy de Desenvolvimento exclusivo para o contêiner e confie nele em todo o sistema e em runtimes comuns. | boolean | true |
Por exemplo, para instalar uma versão específica do Dev Proxy, use a seguinte configuração:
{
"features": {
"ghcr.io/dotnet/dev-proxy/dev-proxy:1": {
"version": "4.0.0"
}
}
}
Para experimentar os recursos de visualização mais recentes, defina version como beta. Quando você instala uma versão beta, a Funcionalidade também adiciona o comando devproxy-beta.
Se você usar o Dev Proxy em uma configuração de contêiner de desenvolvimento compartilhado, considere fixar o Dev Proxy em uma versão específica, em vez de latest ou beta. Dessa forma, você garante que todos que trabalham no projeto usem a mesma versão do Dev Proxy.
Como a funcionalidade lida com o certificado raiz
O Proxy de Desenvolvimento usa um certificado raiz para descriptografar o tráfego HTTPS. O recurso não gera o certificado quando gera a imagem. Se isso acontecesse, o certificado e sua chave privada acabariam em uma camada de imagem, e todos que usam a mesma imagem ou o prebuild do Codespaces compartilhariam a mesma autoridade de certificação confiável.
Em vez disso, depois que o contêiner é criado (postCreateCommand), o recurso:
- É executado
devproxy cert ensurecomo o usuário remoto para gerar um certificado raiz exclusivo para o contêiner. - Adiciona o certificado ao repositório de certificados do sistema (
/usr/local/share/ca-certificates), para que curl, .NET e outras ferramentas que usam o repositório do sistema confiem nele.
Alguns runtimes não usam o repositório de certificados do sistema, portanto, o recurso define as seguintes variáveis de ambiente para apontá-las para o pacote de AC do sistema (/etc/ssl/certs/ca-certificates.crt):
| Variable | Usado por |
|---|---|
NODE_EXTRA_CA_CERTS |
Node.js |
REQUESTS_CA_BUNDLE |
Python requests |
SSL_CERT_FILE |
Python e outras ferramentas baseadas em OpenSSL |
Para confiar no certificado, a funcionalidade instala um script auxiliar de propriedade do root e permite que o usuário remoto o execute com sudo sem uma senha. Se você não quiser que a Funcionalidade gere e confie no certificado, defina trustCertificate como false:
{
"features": {
"ghcr.io/dotnet/dev-proxy/dev-proxy:1": {
"trustCertificate": false
}
}
}
Importante
O Recurso não configura os repositórios de chaves do Java, portanto, os aplicativos Java não confiam no certificado raiz do Proxy de Desenvolvimento.
Python 3.13 e versões mais recentes habilitam a verificação estrita de certificados, que rejeita os certificados que o Dev Proxy v3 e versões anteriores geram para hosts interceptados. Para chamar APIs por meio do Dev Proxy a partir do Python 3.13 ou mais recente, use o Dev Proxy v4 ou mais recente.
Usar o Dev Proxy no contêiner de desenvolvimento
O recurso não inicia o Proxy de Desenvolvimento e não define as HTTP_PROXY ou variáveis de ambiente HTTPS_PROXY para o contêiner inteiro. As variáveis de proxy em todo o contêiner roteariam o tráfego dos gerenciadores de pacotes, do git e do próprio VS Code por meio do Dev Proxy, o que interrompe essas ferramentas quando o Dev Proxy não está em execução.
Para usar o Dev Proxy, inicie-o em um terminal no contêiner de desenvolvimento com o arquivo de configuração:
devproxy --config-file .devproxy/devproxyrc.json
Em seguida, configure o aplicativo que você está testando para usar o Proxy de Desenvolvimento. Por exemplo, para rotear solicitações de um aplicativo Node.js por meio do Dev Proxy, inicie o aplicativo com a variável de ambiente HTTPS_PROXY:
HTTPS_PROXY=http://127.0.0.1:8000 npm start
Para obter mais informações sobre como configurar seu aplicativo para usar o Dev Proxy, consulte o guia para sua pilha, como Usar Dev Proxy com aplicativos Node.js ou Usar Dev Proxy com aplicativos .NET.
Kit de ferramentas de proxy para desenvolvimento
O recurso adiciona a extensão Dev Proxy Toolkit ao VS Code no contêiner de desenvolvimento. Se você não quiser instalar a extensão, exclua-a no seu arquivo devcontainer.json:
{
"features": {
"ghcr.io/dotnet/dev-proxy/dev-proxy:1": {}
},
"customizations": {
"vscode": {
"extensions": ["-garrytrinder.dev-proxy-toolkit"]
}
}
}
Imagens suportadas
O recurso dá suporte a imagens baseadas em Debian e Ubuntu em x64 e arm64. Imagens Alpine e outras baseadas em musl não são compatíveis.