Używanie Dev Proxy w kontenerach deweloperskich i GitHub Codespaces

Na pierwszy rzut oka
Cel: Instalowanie Dev Proxy w kontenerze deweloperskim lub GitHub Codespaces
Czas: 10 minut
Wymagania wstępne: Projekt z plikiem devcontainer.json, Dockerem lub GitHub Codespaces

Jeśli programujesz w kontenerze deweloperskim lub w usłudze GitHub Codespaces, możesz zainstalować Dev Proxy przy użyciu funkcji Dev Container Feature. Funkcja instaluje Dev Proxy w kontenerze i po utworzeniu kontenera generuje unikatowy dla kontenera certyfikat główny Dev Proxy i uznaje go za zaufany. Nie musisz wykonywać pierwszych kroków uruchamiania, aby samodzielnie zaufać certyfikatowi.

Dodaj funkcję Dev Proxy do kontenera deweloperskiego

Aby zainstalować Dev Proxy w kontenerze deweloperskim, dodaj funkcję Dev Proxy do sekcji .devcontainer/devcontainer.json w pliku features:

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

Ponownie skompiluj kontener lub utwórz nowy codespace, aby zastosować zmianę. Po uruchomieniu kontenera sprawdź, czy Dev Proxy jest zainstalowany:

devproxy --version

Note

Funkcja jest wersjonowana oddzielnie od Dev Proxy. ghcr.io/dotnet/dev-proxy/dev-proxy:1 odnosi się do wersji 1 Funkcji. Aby wybrać wersję Dev Proxy do zainstalowania, użyj opcji version.

Skonfiguruj funkcję

Funkcja obsługuje następujące opcje:

Opcja Description Typ Wartość domyślna
version Wersja Dev Proxy do zainstalowania: latest, beta lub określona wersja, taka jak 4.0.0 lub v4.0.0. ciąg latest
trustCertificate Po utworzeniu kontenera wygeneruj unikatowy dla kontenera certyfikat główny Dev Proxy i zaufaj mu w całym systemie oraz dla typowych środowisk uruchomieniowych. boolean true

Aby na przykład zainstalować określoną wersję Dev Proxy, użyj następującej konfiguracji:

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

Aby wypróbować najnowsze funkcje w wersji zapoznawczej, ustaw version na beta. Podczas instalowania wersji beta Funkcja również dodaje polecenie devproxy-beta.

Jeśli używasz Dev Proxy we współdzielonej konfiguracji kontenera deweloperskiego, rozważ przypięcie Dev Proxy do określonej wersji zamiast latest lub beta. Dzięki temu wszyscy pracujący nad projektem korzystają z tej samej wersji Dev Proxy.

Jak funkcja obsługuje certyfikat główny

Dev Proxy używa certyfikatu root do odszyfrowania ruchu HTTPS. Funkcja nie generuje certyfikatu podczas kompilowanie obrazu. Jeśli tak się stało, certyfikat i jego klucz prywatny trafiłyby do warstwy obrazu, a wszyscy używający tego samego obrazu lub prebuild Codespaces współużytkowaliby ten sam zaufany urząd certyfikacji CA.

Zamiast tego po utworzeniu kontenera (postCreateCommand) cecha:

  1. Uruchamia devproxy cert ensure jako użytkownik zdalny w celu wygenerowania certyfikatu root unikatowego dla kontenera.
  2. Dodaje certyfikat do systemowego magazynu certyfikatów (/usr/local/share/ca-certificates), tak aby program curl, .NET i inne narzędzia korzystające z magazynu systemowego ufały mu.

Niektóre środowiska uruchomieniowe nie korzystają z magazynu certyfikatów systemowych, dlatego funkcja ustawia następujące zmienne środowiskowe, aby wskazywały na systemowy pakiet certyfikatów CA (/etc/ssl/certs/ca-certificates.crt):

Zmienna Używane przez
NODE_EXTRA_CA_CERTS Node.js
REQUESTS_CA_BUNDLE Python requests
SSL_CERT_FILE Python i inne narzędzia oparte na OpenSSL

Aby zaufać certyfikatowi, funkcja instaluje skrypt pomocnika należącego do root i umożliwia zdalnemu użytkownikowi uruchamianie go sudo bez hasła. Jeśli nie chcesz, aby funkcja generowała certyfikat i ufała mu, ustaw trustCertificate na false:

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

Important

Funkcja nie konfiguruje magazynów kluczy Java, dlatego aplikacje Java nie ufają certyfikatowi głównemu Dev Proxy.

Python 3.13 i nowsze umożliwiają ścisłą weryfikację certyfikatu, która odrzuca certyfikaty generowane przez Dev Proxy w wersji 3 i starszych dla przechwyconych hostów. Aby wywołać interfejsy API za pośrednictwem Dev Proxy w Pythonie 3.13 lub nowszym, użyj Dev Proxy w wersji 4 lub nowszej.

Używanie Dev Proxy w kontenerze deweloperskim

Funkcja nie uruchamia Dev Proxy i nie ustawia zmiennych środowiskowych HTTP_PROXY lub HTTPS_PROXY dla całego kontenera. Zmienne serwera proxy dla całego kontenera kierowałyby menedżerów pakietów, usługi Git i własny ruch programu VS Code za pośrednictwem Dev Proxy, co powoduje, że przestają działać, gdy Dev Proxy nie jest uruchomiony.

Aby użyć Dev Proxy, uruchom go w terminalu w kontenerze deweloperskim przy użyciu pliku konfiguracji:

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

Następnie skonfiguruj aplikację, którą testujesz, aby używać Dev Proxy. Aby na przykład kierować żądania z aplikacji Node.js za pośrednictwem Dev Proxy, uruchom aplikację przy użyciu zmiennej środowiskowej HTTPS_PROXY:

HTTPS_PROXY=http://127.0.0.1:8000 npm start

Aby uzyskać więcej informacji na temat konfigurowania aplikacji do korzystania z Dev Proxy, zobacz przewodnik dla stosu, taki jak Korzystanie z Dev Proxy z aplikacjami Node.js lub Korzystanie z Dev Proxy z aplikacjami .NET.

Zestaw narzędzi proxy dla dewelopera

Funkcja dodaje rozszerzenie Dev Proxy Toolkit do programu VS Code w kontenerze deweloperskim. Jeśli nie chcesz instalować rozszerzenia, wyklucz je w pliku devcontainer.json:

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

Obsługiwane obrazy dysków

Funkcja obsługuje obrazy oparte na systemach Debian i Ubuntu na komputerach x64 i arm64. Alpine i inne obrazy oparte na musl nie są obsługiwane.

Informacje dodatkowe