Dev Proxy gebruiken in dev-containers en GitHub Codespaces

In één oogopslag
Doel: Dev Proxy installeren in een dev-container of GitHub Codespaces
Tijd: 10 minuten
Vereisten: Een project met een devcontainer.json bestand, Docker of GitHub Codespaces

Als u ontwikkelt in een dev-container of in GitHub Codespaces, kunt u Dev Proxy installeren met behulp van de functie Dev Proxy Dev Container. De functie installeert Dev Proxy in de container en genereert, nadat de container is gemaakt, een Dev Proxy-basiscertificaat dat uniek is voor de container en markeert het als vertrouwd. U hoeft niet de stappen voor de eerste keer opstarten uit te voeren om het certificaat zelf te vertrouwen.

De functie Dev Proxy toevoegen aan uw dev-container

Als u Dev Proxy wilt installeren in uw dev-container, voegt u de functie Dev Proxy toe aan de features sectie van uw .devcontainer/devcontainer.json bestand:

{
  "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
  "features": {
    "ghcr.io/dotnet/dev-proxy/dev-proxy:1": {}
  }
}

Bouw de container opnieuw of maak een nieuwe codespace om de wijziging toe te passen. Nadat de container is gestart, controleert u of dev proxy is geïnstalleerd:

devproxy --version

Note

De functie wordt afzonderlijk van Dev Proxy geversied. ghcr.io/dotnet/dev-proxy/dev-proxy:1 verwijst naar versie 1 van de Feature. Als u wilt kiezen welke versie van Dev Proxy u wilt installeren, gebruikt u de version optie.

Functie configureren

De functie ondersteunt de volgende opties:

Option Description Type Default
version Dev Proxy-versie die moet worden geïnstalleerd: latest, betaof een specifieke versie zoals 4.0.0 of v4.0.0. string latest
trustCertificate Nadat de container is gemaakt, genereer een Dev Proxy-basiscertificaat dat uniek is voor de container en vertrouw het systeembreed en voor gangbare runtimes. boolean true

Als u bijvoorbeeld een specifieke versie van Dev Proxy wilt installeren, gebruikt u de volgende configuratie:

{
  "features": {
    "ghcr.io/dotnet/dev-proxy/dev-proxy:1": {
      "version": "4.0.0"
    }
  }
}

Als u de nieuwste preview-functies wilt proberen, stelt u version in op beta. Wanneer u een bètaversie installeert, wordt met de functie ook de devproxy-beta opdracht toegevoegd.

Als u Dev Proxy gebruikt in een configuratie van een gedeelde dev-container, kunt u overwegen dev-proxy vast te maken aan een specifieke versie, in plaats van latest of beta. Op deze manier zorgt u ervoor dat iedereen die aan het project werkt, dezelfde versie van Dev Proxy gebruikt.

Hoe de functie het rootcertificaat verwerkt

Dev Proxy gebruikt een rootcertificaat om HTTPS-verkeer te ontsleutelen. De functie genereert het certificaat niet wanneer de image wordt gebouwd. Als dat zou gebeuren, zouden het certificaat en de persoonlijke sleutel uiteindelijk in een afbeeldingslaag terechtkomen en iedereen die dezelfde image of Codespaces-prebuild gebruikt, dezelfde vertrouwde certificeringsinstantie delen.

In plaats daarvan is, nadat de container is gemaakt (postCreateCommand), de Feature:

  1. Wordt als de externe gebruiker uitgevoerd devproxy cert ensure om een rootcertificaat te genereren dat uniek is voor de container.
  2. Voegt het certificaat toe aan het certificaatarchief van het systeem (/usr/local/share/ca-certificates), zodat curl, .NET en andere hulpprogramma's die het systeemarchief gebruiken het certificaat vertrouwen.

Sommige runtimes gebruiken het certificaatarchief van het systeem niet, dus met de functie worden de volgende omgevingsvariabelen ingesteld om ze naar de systeem-CA-bundel (/etc/ssl/certs/ca-certificates.crt) te laten verwijzen:

Variabel Wordt gebruikt door
NODE_EXTRA_CA_CERTS Node.js
REQUESTS_CA_BUNDLE Python requests
SSL_CERT_FILE Python en andere op OpenSSL gebaseerde hulpprogramma's

Als u het certificaat wilt vertrouwen, installeert de functie een door root beheerd helperscript en mag de externe gebruiker het met sudo zonder wachtwoord uitvoeren. Als u niet wilt dat de functie het certificaat automatisch genereert en vertrouwt, stelt u trustCertificate in op false:

{
  "features": {
    "ghcr.io/dotnet/dev-proxy/dev-proxy:1": {
      "trustCertificate": false
    }
  }
}

Important

De functie configureert geen Java-keystores, zodat Java-apps het basiscertificaat van de Dev Proxy niet vertrouwen.

Python 3.13 en nieuwer maakt strikte certificaatverificatie mogelijk. Hierdoor worden de certificaten geweigerd die Dev Proxy v3 en eerder voor onderschepte hosts genereert. Als u API's wilt aanroepen via Dev Proxy vanaf Python 3.13 of hoger, gebruikt u Dev Proxy v4 of hoger.

Dev Proxy gebruiken in de dev-container

De functie start Dev Proxy niet en stelt de HTTPS_PROXY- of HTTP_PROXY-omgevingsvariabelen niet in voor de hele container. Proxyvariabelen voor de hele container routeren pakketbeheerders, git en VS Code's eigen verkeer via Dev Proxy, waardoor ze niet meer werken wanneer Dev Proxy niet wordt uitgevoerd.

Als u Dev Proxy wilt gebruiken, start u deze in een terminal in de dev-container met uw configuratiebestand:

devproxy --config-file .devproxy/devproxyrc.json

Configureer vervolgens de app die u test om Dev Proxy te gebruiken. Als u bijvoorbeeld aanvragen wilt routeren vanuit een Node.js-app via Dev Proxy, start u de app met de HTTPS_PROXY omgevingsvariabele:

HTTPS_PROXY=http://127.0.0.1:8000 npm start

Zie de handleiding voor uw stack voor meer informatie over het configureren van uw app voor het gebruik van Dev Proxy, zoals Dev Proxy gebruiken met Node.js toepassingen of Dev Proxy gebruiken met .NET toepassingen.

Dev Proxy Toolkit

Met de functie wordt de extensie Dev Proxy Toolkit toegevoegd aan VS Code in de dev-container. Als u de extensie niet wilt installeren, sluit u deze uit in uw devcontainer.json bestand:

{
  "features": {
    "ghcr.io/dotnet/dev-proxy/dev-proxy:1": {}
  },
  "customizations": {
    "vscode": {
      "extensions": ["-garrytrinder.dev-proxy-toolkit"]
    }
  }
}

Ondersteunde afbeeldingen

De functie ondersteunt Debian- en Ubuntu-images op x64 en arm64. Alpine en andere op musl gebaseerde installatiekopieën worden niet ondersteund.

Zie ook