Använd Dev Proxy i dev-containrar och GitHub Codespaces

Överblick
Mål: Installera Dev Proxy i en utvecklingscontainer eller GitHub Codespaces
Tid: 10 minuter
Förutsättningar: Ett projekt med en devcontainer.json fil, Docker eller GitHub Codespaces

Om du utvecklar i en dev container eller i GitHub Codespaces kan du installera Dev Proxy med hjälp av funktionen Dev Proxy Dev Container. Funktionen installerar Dev Proxy i containern och när containern har skapats genererar den ett Dev Proxy-rotcertifikat som är unikt för containern och lägger till det som betrott. Du behöver inte följa stegen för den första körningen för att själv lita på certifikatet.

Lägg till Dev Proxy Feature i din utvecklingscontainer

Om du vill installera Dev Proxy i din utvecklingscontainer lägger du till Dev Proxy-funktionen i avsnittet features i filen .devcontainer/devcontainer.json:

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

Återskapa containern eller skapa ett nytt codespace för att tillämpa ändringen. När containern har startat kontrollerar du att Dev Proxy har installerats:

devproxy --version

Note

Funktionen versionshanteras separat från Dev Proxy. ghcr.io/dotnet/dev-proxy/dev-proxy:1 refererar till version 1 av funktionen. Om du vill välja vilken version av Dev Proxy som ska installeras använder du alternativet version .

Konfigurera funktionen

Funktionen stöder följande alternativ:

Option Description Type Default
version Dev Proxy-version som ska installeras: latest, betaeller en specifik version som 4.0.0 eller v4.0.0. string latest
trustCertificate När containern har skapats genererar du ett Dev Proxy-rotcertifikat som är unikt för containern och gör det betrott i hela systemet och för vanliga körmiljöer. boolean true

Om du till exempel vill installera en specifik version av Dev Proxy använder du följande konfiguration:

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

Om du vill prova de senaste förhandsgranskningsfunktionerna ställer du in version på beta. När du installerar en betaversion lägger funktionen också till devproxy-beta kommandot.

Om du använder Dev Proxy i en konfiguration av en delad utvecklingscontainer bör du överväga att fästa Dev Proxy på en viss version i stället för latest eller beta. På så sätt ser du till att alla som arbetar med projektet använder samma version av Dev Proxy.

Så hanterar funktionen rotcertifikatet

Dev Proxy använder ett rotcertifikat för att dekryptera HTTPS-trafik. Funktionen genererar inte certifikatet när den skapar avbildningen. Om det gjorde det skulle certifikatet och dess privata nyckel hamna i ett avbildningslager, och alla som använder samma bild eller Codespaces-förbuild skulle dela samma betrodda certifikatutfärdare.

I stället, efter att containern har skapats (postCreateCommand), funktionen:

  1. Körs devproxy cert ensure som fjärranvändare för att generera ett rotcertifikat som är unikt för containern.
  2. Lägger till certifikatet i systemcertifikatarkivet (/usr/local/share/ca-certificates), så att curl, .NET och andra verktyg som använder systemarkivet litar på det.

Vissa körningsmiljöer använder inte systemets certifikatarkiv, så funktionen anger följande miljövariabler så att de pekar på systemets CA-paket (/etc/ssl/certs/ca-certificates.crt):

Variabel Används av
NODE_EXTRA_CA_CERTS Node.js
REQUESTS_CA_BUNDLE Python requests
SSL_CERT_FILE Python och andra OpenSSL-baserade verktyg

För att lita på certifikatet installerar funktionen ett rotägt hjälpskript och låter fjärranvändaren köra det med sudo utan lösenord. Om du inte vill att funktionen ska generera och lägga till certifikatet som betrott anger du trustCertificate till false:

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

Important

Funktionen konfigurerar inte Java nyckelarkiv, så Java appar litar inte på rotcertifikatet för Dev Proxy.

Python 3.13 och senare aktiverar strikt certifikatverifiering, vilket avvisar de certifikat som Dev Proxy v3 och tidigare genererar för interceptade värdar. Om du vill anropa API:er via Dev Proxy från Python 3.13 eller senare använder du Dev Proxy v4 eller senare.

Använd Dev Proxy i utvecklingscontainern

Funktionen startar inte Dev Proxy och anger inte miljövariablerna HTTP_PROXY eller HTTPS_PROXY för hela containern. Proxyvariabler för hela containern dirigerar pakethanterare, git och VS Codes egen trafik via Dev Proxy, vilket gör att de slutar fungera när Dev Proxy inte körs.

Om du vill använda Dev Proxy startar du den i en terminal i utvecklingscontainern med konfigurationsfilen:

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

Konfigurera sedan appen som du testar för att använda Dev Proxy. Om du till exempel vill dirigera begäranden från en Node.js app via Dev Proxy startar du appen med HTTPS_PROXY miljövariabeln:

HTTPS_PROXY=http://127.0.0.1:8000 npm start

Mer information om hur du konfigurerar appen för att använda Dev Proxy finns i guiden för din stack, till exempel Använda Dev Proxy med Node.js-program eller Använd Dev Proxy med .NET program.

Dev Proxy Toolkit

Funktionen för lägger till tillägget Dev Proxy Toolkit till VS Code i utvecklingscontainern. Om du inte vill installera tillägget utesluter du det i devcontainer.json filen:

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

Bilder som stöds

Funktionen stöder Debian- och Ubuntu-baserade bilder på x64 och arm64. Alpine och andra musl-baserade avbildningar stöds inte.

Se även