Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Auf einen Blick
Ziel: Verwenden des Dev-Proxys mit Docker Compose
Zeit: 20 Minuten
Plugins: Verschiedene
Voraussetzungen:Einrichten von Dev Proxy, Docker und Docker Compose installiert
Wenn Sie Anwendungen mit Docker entwickeln, sollten Sie mit Dev Proxy testen, wie Ihre App API-Fehler, Drosselung oder Simulierte API-Antworten verarbeitet. In diesem Artikel wird gezeigt, wie Sie Dev Proxy mit Docker Compose in zwei Szenarien verwenden:
- Dev Proxy, der auf Ihrem Hostcomputer ausgeführt wird, App in einem Container
- Dev Proxy, der zusammen mit Ihrem App-Container in einem Container ausgeführt wird
Szenario 1: Dev-Proxy auf Host, App im Container
In diesem Szenario führen Sie Dev Proxy direkt auf Ihrem Computer aus, während Ihre Anwendung in einem Docker-Container ausgeführt wird. Dieser Ansatz ist nützlich, wenn Sie aktiv entwickeln und direkt mit Dev Proxy interagieren möchten.
Konfigurieren des Anwendungscontainers
Erstellen Sie eine docker-compose.yaml Datei, die Ihre Anwendung so konfiguriert, dass der auf Ihrem Host ausgeführte Dev-Proxy verwendet wird:
services:
app:
build: .
environment:
# Point to Dev Proxy on the host machine
- HTTPS_PROXY=http://host.docker.internal:8000
- HTTP_PROXY=http://host.docker.internal:8000
# For Node.js applications
- NODE_TLS_REJECT_UNAUTHORIZED=0
extra_hosts:
# Ensure host.docker.internal resolves correctly on Linux
- "host.docker.internal:host-gateway"
Starten des Dev-Proxys auf Ihrem Host
Bevor Sie Ihren Anwendungscontainer starten, starten Sie Dev Proxy auf Ihrem Hostrechner. Binden Sie unter macOS und Linux Dev Proxy an alle Netzwerkschnittstellen:
devproxy --ip-address 0.0.0.0
Unter Windows können Sie Dev Proxy normal starten:
devproxy
Verwalten von TLS/SSL-Zertifikaten
Wenn Ihre Anwendung HTTPS-Anforderungen über Dev Proxy sendet, muss der Container dem Dev-Proxyzertifikat vertrauen. Sie haben zwei Möglichkeiten:
Option 1: Zertifikatüberprüfung deaktivieren (nur Entwicklung)
Für schnelle Tests können Sie die Zertifikatüberprüfung in Ihrer Anwendung deaktivieren. Legen Sie für Node.js Anwendungen die NODE_TLS_REJECT_UNAUTHORIZED=0 Umgebungsvariable (bereits im vorherigen Beispiel enthalten) fest. Für .NET-Anwendungen können Sie Ihren HTTP-Client so konfigurieren, dass die Zertifikatüberprüfung übersprungen wird.
Vorsicht
Deaktivieren Sie niemals die Zertifikatüberprüfung im Produktionscode.
Option 2: Vertrauen Sie dem Dev Proxy-Zertifikat im Container
Installieren Sie für ein produktionsähnliches Setup das Dev Proxy-Zertifikat in Ihrem Container. Exportieren Sie zunächst das Zertifikat von Ihrem Host, und fügen Sie es Ihrem Docker-Image hinzu. Ausführliche Schritte finden Sie unter Verwenden von Dev Proxy mit .NET-Anwendungen, die in Docker ausgeführt werden .
Starten Der Anwendung
Starten Sie Ihren Anwendungscontainer:
docker compose up
Ihre Anwendung leitet jetzt den gesamten HTTP- und HTTPS-Datenverkehr über Dev Proxy weiter, der auf Ihrem Host ausgeführt wird.
Szenario 2: Dev Proxy und App in separaten Containern
In diesem erweiterten Szenario werden sowohl Dev Proxy als auch Ihre Anwendung in Docker-Containern ausgeführt. Dieser Ansatz ist für CI/CD-Pipelines nützlich oder wenn Sie eine vollständig containerisierte Entwicklungsumgebung benötigen.
Erstellen des Zertifikatsvolumens
Beide Container benötigen Zugriff auf das Dev Proxy-Zertifikat. Erstellen Sie ein Docker-Volume, um es zu teilen:
docker volume create devproxy-cert
Skript für den Einstiegspunkt erstellen
Erstellen Sie ein entrypoint.sh Skript, das das Dev Proxy-Zertifikat installiert, wenn der Anwendungscontainer gestartet wird:
#!/bin/bash
set -e
# Wait for the Dev Proxy certificate to be available
echo "Waiting for Dev Proxy certificate..."
while [ ! -f /cert/rootCert.pfx ]; do
sleep 1
done
# Convert PFX to PEM format
openssl pkcs12 \
-in /cert/rootCert.pfx \
-out /usr/local/share/ca-certificates/dev-proxy-ca.crt \
-clcerts \
-nokeys \
-passin pass:""
# Update system certificates
update-ca-certificates
echo "Dev Proxy certificate installed"
# Execute the main command
exec "$@"
Erstellen Sie die ausführbare Datei des Skripts:
chmod +x entrypoint.sh
Erstellen der Anwendung Dockerfile
Erstellen Sie eine Dockerfile für Ihre Anwendung, die die Voraussetzungen für die Zertifikatinstallation enthält.
# Example for a Node.js application
FROM node:20
# Install certificate tools
RUN apt-get update && apt-get install -y \
openssl \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Copy application files
COPY package*.json ./
RUN npm install
COPY . .
# Copy entrypoint script
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["node", "index.js"]
Erstellen der Docker Compose-Konfiguration
Erstellen Sie eine docker-compose.yaml Datei, die beide Dienste definiert:
services:
dev-proxy:
image: ghcr.io/dotnet/dev-proxy:latest
ports:
- "8000:8000"
- "8897:8897"
volumes:
# Mount your Dev Proxy configuration
- ./devproxyrc.json:/config/devproxyrc.json
# Share the certificate with the app container
- devproxy-cert:/home/devproxy/.config/dev-proxy/rootCert
# Generate the certificate on startup
command: ["--install-cert"]
stdin_open: true
tty: true
app:
build: .
depends_on:
- dev-proxy
environment:
# Point to the Dev Proxy container
- HTTPS_PROXY=http://dev-proxy:8000
- HTTP_PROXY=http://dev-proxy:8000
volumes:
# Mount the certificate volume
- devproxy-cert:/cert:ro
volumes:
devproxy-cert:
Erstellen einer Dev Proxy-Konfigurationsdatei
Erstellen Sie eine devproxyrc.json Datei im selben Verzeichnis wie Ihr docker-compose.yaml:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/rc.schema.json",
"urlsToWatch": [
"https://api.example.com/*",
"https://graph.microsoft.com/*"
],
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
}
]
}
Starten der Container
Starten Sie beide Container mit Docker Compose:
docker compose up
Dev Proxy startet zuerst und generiert sein Zertifikat. Ihr Anwendungscontainer wartet auf das Zertifikat, installiert es und startet dann die Anwendung. Alle HTTP- und HTTPS-Anforderungen ihrer Anwendung werden jetzt über Dev Proxy weitergeleitet.
Interagieren mit Dev Proxy
Da Dev Proxy in einem Container ausgeführt wird, können Sie auf verschiedene Arten mit dem Proxy interagieren:
Verwenden des Terminals
Anfügen an den Dev Proxy-Container:
docker attach <container-name>
Verwenden der Dev-Proxy-API
Die Dev-Proxy-API wird am Port 8897 verfügbar gemacht. Sie können ihn verwenden, um Dev Proxy programmgesteuert zu steuern:
# Start recording
curl -X POST http://localhost:8897/proxy/recording/start
# Stop recording
curl -X POST http://localhost:8897/proxy/recording/stop
Weitere Informationen finden Sie unter Dev Proxy-API.