Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
A colpo d'occhio
Obiettivo: Installare Dev Proxy in un contenitore di sviluppo o GitHub Codespaces
Tempo: 10 minuti
Prerequisiti: Un progetto con undevcontainer.jsonfile, Docker o GitHub Codespaces
Se si sviluppa in un dev container o in GitHub Codespaces, è possibile installare Dev Proxy usando la funzionalità Dev Container Feature di Dev Proxy. La funzionalità installa Dev Proxy nel contenitore e, dopo aver creato il contenitore, genera un certificato radice di Dev Proxy univoco per il contenitore e lo considera attendibile. Non è necessario seguire i passaggi della prima esecuzione per considerare attendibile manualmente il certificato.
Aggiungere la funzionalità Dev Proxy al contenitore di sviluppo
Per installare Dev Proxy nel contenitore di sviluppo, aggiungere la funzionalità Dev Proxy alla features sezione del .devcontainer/devcontainer.json file:
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/dotnet/dev-proxy/dev-proxy:1": {}
}
}
Ricompilare il contenitore o creare un nuovo codespace per applicare la modifica. Dopo l'avvio del contenitore, verificare che Dev Proxy sia installato:
devproxy --version
Note
La funzionalità è versionata separatamente da Dev Proxy.
ghcr.io/dotnet/dev-proxy/dev-proxy:1 fa riferimento alla versione 1 della funzionalità. Per scegliere la versione di Dev Proxy da installare, usare l'opzione version .
Configura la funzionalità
La funzionalità supporta le opzioni seguenti:
| Opzione | Description | Type | Predefinito |
|---|---|---|---|
version |
Versione di Dev Proxy da installare: latest, betao una versione specifica come 4.0.0 o v4.0.0. |
string | latest |
trustCertificate |
Dopo aver creato il contenitore, generare un certificato radice di Dev Proxy univoco per il contenitore e considerarlo attendibile a livello di sistema e per i runtime comuni. | boolean | true |
Ad esempio, per installare una versione specifica di Dev Proxy, usare la configurazione seguente:
{
"features": {
"ghcr.io/dotnet/dev-proxy/dev-proxy:1": {
"version": "4.0.0"
}
}
}
Per provare le funzionalità di anteprima più recenti, impostare version su beta. Quando si installa una versione beta, la funzionalità aggiunge anche il devproxy-beta comando .
Se si usa Dev Proxy in una configurazione del contenitore di sviluppo condiviso, prendere in considerazione il blocco di Dev Proxy a una versione specifica, invece di latest o beta. In questo modo, ti assicuri che tutti gli utenti che lavorano sul progetto usino la stessa versione di Dev Proxy.
Come la funzionalità gestisce il certificato radice
Dev Proxy usa un certificato radice per decrittografare il traffico HTTPS. La funzionalità non genera il certificato quando genera l'immagine. Se così fosse, il certificato e la relativa chiave privata finirebbero in un livello immagine e tutti gli utenti che usano la stessa immagine o la stessa precompilazione codespace condividerebbero la stessa autorità di certificazione attendibile.
Invece, dopo aver creato il contenitore (postCreateCommand), la funzionalità:
- Viene eseguito
devproxy cert ensurecome utente remoto per generare un certificato radice univoco per il contenitore. - Aggiunge il certificato all'archivio certificati di sistema (
/usr/local/share/ca-certificates), in modo che curl, .NET e altri strumenti che usano l'archivio di sistema considerino attendibile il certificato.
Alcuni runtime non usano l'archivio certificati di sistema, quindi la funzionalità imposta le variabili di ambiente seguenti per indirizzarle al bundle ca di sistema (/etc/ssl/certs/ca-certificates.crt):
| Variabile | Usato da |
|---|---|
NODE_EXTRA_CA_CERTS |
Node.js |
REQUESTS_CA_BUNDLE |
Python requests |
SSL_CERT_FILE |
Python e altri strumenti basati su OpenSSL |
Per considerare attendibile il certificato, la funzionalità installa uno script helper di proprietà di root e consente all'utente remoto di eseguirlo con sudo senza password. Se non si vuole che la funzionalità generi e consideri attendibile il certificato, impostare trustCertificate su false:
{
"features": {
"ghcr.io/dotnet/dev-proxy/dev-proxy:1": {
"trustCertificate": false
}
}
}
Importante
La funzionalità non configura i keystore Java, quindi le app Java non considerano attendibile il certificato radice del proxy di sviluppo.
Python 3.13 e versioni successive abilitano la verifica rigorosa dei certificati, che rifiuta i certificati che Dev Proxy v3 e versioni precedenti generano per gli host intercettati. Per chiamare le API tramite Dev Proxy da Python 3.13 o versione successiva, usare Dev Proxy v4 o versione successiva.
Usare Dev Proxy nel contenitore di sviluppo
La funzionalità non avvia il proxy di sviluppo e non imposta le HTTP_PROXYvariabili di ambienteHTTPS_PROXY per l'intero contenitore. Le variabili proxy a livello di contenitore instraderebbero i gestori pacchetti, Git e il traffico di VS Code stesso tramite Dev Proxy, che li interrompe quando Dev Proxy non è in esecuzione.
Per usare Dev Proxy, avvialo in un terminale nel contenitore di sviluppo con il file di configurazione:
devproxy --config-file .devproxy/devproxyrc.json
Configurare quindi l'app che si sta testando per l'uso di Dev Proxy. Ad esempio, per instradare le richieste da un'app Node.js tramite Dev Proxy, avviare l'app con la HTTPS_PROXY variabile di ambiente:
HTTPS_PROXY=http://127.0.0.1:8000 npm start
Per altre informazioni sulla configurazione dell'app per l'uso di Dev Proxy, vedere la guida per lo stack, ad esempio Usare Dev Proxy con applicazioni Node.js o Usare Dev Proxy con applicazioni .NET.
Dev Proxy Toolkit
La funzionalità aggiunge l'estensione Dev Proxy Toolkit a VS Code nel contenitore di sviluppo. Se non si vuole installare l'estensione, escludilo nel file devcontainer.json:
{
"features": {
"ghcr.io/dotnet/dev-proxy/dev-proxy:1": {}
},
"customizations": {
"vscode": {
"extensions": ["-garrytrinder.dev-proxy-toolkit"]
}
}
}
Immagini supportate
La funzionalità supporta immagini basate su Debian e Ubuntu su x64 e arm64. Le immagini Alpine e altre immagini basate su musl non sono supportate.