Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Na pierwszy rzut oka
Celem: Korzystanie z Proxy Dev przy użyciu Docker Compose
Czas: 20 minut
Wtyczki: Różne
Wymagania wstępne: konfigurowanie zainstalowanego serwera proxy deweloperskiego, platformy Docker i narzędzia Docker Compose
Podczas tworzenia aplikacji za pomocą Docker warto użyć Dev Proxy, aby przetestować, jak aplikacja radzi sobie z błędami API, ograniczaniem liczby żądań lub pozorowaniem odpowiedzi API. W tym artykule pokazano, jak używać serwera proxy dev z narzędziem Docker Compose w dwóch scenariuszach:
- Serwer proxy deweloperski uruchomiony na maszynie hosta, aplikacja w kontenerze
- Serwer proxy deweloperski działający w kontenerze wraz z kontenerem aplikacji
Scenariusz 1. Tworzenie serwera proxy na hoście, aplikacja w kontenerze
W tym scenariuszu uruchamiasz serwer proxy deweloperów bezpośrednio na maszynie, gdy aplikacja działa w kontenerze platformy Docker. Takie podejście jest przydatne podczas aktywnego opracowywania i bezpośredniej współpracy z Dev Proxy.
Konfigurowanie kontenera aplikacji
Utwórz plik, który konfiguruje aplikację docker-compose.yaml tak, aby korzystała z serwera proxy deweloperskiego uruchomionego na hoście:
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"
Uruchamianie serwera proxy deweloperskiego na hoście
Przed uruchomieniem kontenera aplikacji uruchom serwer proxy deweloperski na maszynie hosta. W systemach macOS i Linux zawiąż Dev Proxy ze wszystkimi interfejsami sieciowymi:
devproxy --ip-address 0.0.0.0
W systemie Windows można normalnie uruchomić serwer proxy deweloperów:
devproxy
Obsługa certyfikatów TLS/SSL
Gdy aplikacja wysyła żądania HTTPS za pośrednictwem serwera proxy deweloperskiego, kontener musi ufać certyfikatowi serwera proxy deweloperów. Dostępne są dwie opcje:
Opcja 1. Wyłączanie weryfikacji certyfikatu (tylko programowanie)
W celu szybkiego testowania możesz wyłączyć walidację certyfikatu w aplikacji. W przypadku aplikacji Node.js ustaw zmienną NODE_TLS_REJECT_UNAUTHORIZED=0 środowiskową (już uwzględnioną w poprzednim przykładzie). W przypadku aplikacji platformy .NET można skonfigurować klienta HTTP, aby pominąć walidację certyfikatu.
Ostrzeżenie
Nigdy nie wyłączaj walidacji certyfikatu w kodzie produkcyjnym.
Opcja 2: Zaufaj certyfikatowi proxy deweloperskiego w kontenerze
Aby uzyskać konfigurację zbliżoną do produkcyjnej, zainstaluj certyfikat Dev Proxy w kontenerze. Najpierw wyeksportuj certyfikat z hosta i dodaj go do obrazu platformy Docker. Aby uzyskać szczegółowe instrukcje, zobacz Use Dev Proxy with .NET applications running in Docker (Używanie serwera proxy deweloperskiego z aplikacjami .NET uruchomionymi na platformie Docker ).
Uruchamianie aplikacji
Uruchom kontener aplikacji:
docker compose up
Aplikacja kieruje teraz cały ruch HTTP i HTTPS za pośrednictwem serwera proxy deweloperskiego uruchomionego na hoście.
Scenariusz 2. Tworzenie serwera proxy i aplikacji w oddzielnych kontenerach
W tym bardziej zaawansowanym scenariuszu zarówno serwer proxy dev, jak i aplikacja są uruchamiane w kontenerach platformy Docker. Takie podejście jest przydatne do CI/CD lub w pełni konteneryzowanego środowiska deweloperskiego.
Tworzenie woluminu certyfikatu
Oba kontenery muszą mieć dostęp do certyfikatu proxy Dev. Utwórz wolumin platformy Docker, aby go udostępnić:
docker volume create devproxy-cert
Utwórz skrypt punktu wejścia
Utwórz skrypt, który instaluje certyfikat Dev Proxy po uruchomieniu kontenera aplikacji:
#!/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 "$@"
Utwórz plik wykonywalny skryptu:
chmod +x entrypoint.sh
Tworzenie pliku Dockerfile dla aplikacji
Utwórz Dockerfile dla swojej aplikacji, który zawiera wymagania wstępne do instalacji certyfikatu:
# 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"]
Tworzenie konfiguracji narzędzia Docker Compose
docker-compose.yaml Utwórz plik definiujący obie usługi:
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:
Tworzenie pliku konfiguracji serwera proxy dev
devproxyrc.json Utwórz plik w tym samym katalogu co plik docker-compose.yaml:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
"urlsToWatch": [
"https://api.example.com/*",
"https://graph.microsoft.com/*"
],
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
}
]
}
Uruchamianie kontenerów
Uruchom oba kontenery za pomocą narzędzia Docker Compose:
docker compose up
Proxy deweloperskie uruchamia się jako pierwsze i generuje swój certyfikat. Kontener aplikacji czeka na certyfikat, instaluje go, a następnie uruchamia aplikację. Wszystkie żądania HTTP i HTTPS z aplikacji są teraz kierowane za pośrednictwem serwera proxy deweloperów.
Interakcja z Dev Proxy
Ponieważ serwer proxy deweloperów działa w kontenerze, możesz z nim korzystać na kilka sposobów:
Korzystanie z terminalu
Podłącz się do kontenera Dev Proxy:
docker attach <container-name>
Korzystanie z interfejsu API dev proxy
Interfejs API serwera proxy dla deweloperów jest dostępny na porcie 8897. Można go użyć do programowego sterowania serwerem proxy deweloperów:
# Start recording
curl -X POST http://localhost:8897/proxy/recording/start
# Stop recording
curl -X POST http://localhost:8897/proxy/recording/stop
Aby uzyskać więcej informacji, zobacz Dev Proxy API.