Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In één oogopslag
Doel: Dev Proxy gebruiken met Docker Compose
Tijd: 20 minuten
Plugins: Verschillende
Vereisten:Dev Proxy instellen, Docker en Docker Compose geïnstalleerd
Bij het ontwikkelen van apps met Docker wilt u misschien Dev Proxy gebruiken om te testen hoe uw app omgaat met API-fouten, snelheidsbeperkingen of om API-responsen te simuleren. In dit artikel leest u hoe u Dev Proxy gebruikt met Docker Compose in twee scenario's:
- Dev Proxy die wordt uitgevoerd op uw hostcomputer, app in een container
- Dev-proxy die wordt uitgevoerd in een container naast uw app-container
Scenario 1: Dev Proxy op host, app in container
In dit scenario voert u Dev Proxy rechtstreeks uit op uw computer terwijl uw toepassing wordt uitgevoerd in een Docker-container. Deze aanpak is handig wanneer u actief ontwikkelt en rechtstreeks wilt communiceren met Dev Proxy.
Uw toepassingscontainer configureren
Maak een docker-compose.yaml bestand waarmee uw toepassing wordt geconfigureerd voor het gebruik van de Dev Proxy die wordt uitgevoerd op uw host:
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"
Dev Proxy starten op uw host
Voordat u de toepassingscontainer start, start u Dev Proxy op uw hostcomputer. In macOS en Linux bindt u Dev Proxy aan alle netwerkinterfaces:
devproxy --ip-address 0.0.0.0
In Windows kunt u de dev-proxy normaal starten:
devproxy
TLS/SSL-certificaten verwerken
Wanneer uw toepassing HTTPS-aanvragen doet via Dev Proxy, moet de container het Dev Proxy-certificaat vertrouwen. U hebt twee opties:
Optie 1: Certificaatvalidatie uitschakelen (alleen ontwikkeling)
Voor snelle tests kunt u certificaatvalidatie uitschakelen in uw toepassing. Stel voor Node.js toepassingen de NODE_TLS_REJECT_UNAUTHORIZED=0 omgevingsvariabele in (al opgenomen in het vorige voorbeeld). Voor .NET-toepassingen kunt u uw HTTP-client configureren om certificaatvalidatie over te slaan.
Waarschuwing
Schakel certificaatvalidatie nooit uit in productiecode.
Optie 2: Het Dev Proxy-certificaat in de container vertrouwen
Voor een meer productieachtige installatie installeert u het Dev Proxy-certificaat in uw container. Exporteer eerst het certificaat van uw host en voeg het toe aan uw Docker-installatiekopie. Zie Dev Proxy gebruiken met .NET-toepassingen die worden uitgevoerd in Docker voor gedetailleerde stappen.
Uw toepassing starten
Start uw toepassingscontainer:
docker compose up
Uw toepassing routeert nu al het HTTP- en HTTPS-verkeer via Dev Proxy die wordt uitgevoerd op uw host.
Scenario 2: Dev Proxy en app in afzonderlijke containers
In dit geavanceerdere scenario worden zowel Dev Proxy als uw toepassing uitgevoerd in Docker-containers. Deze methode is handig voor CI/CD-pijplijnen of als u een volledig containeromgeving wilt.
Het certificaatvolume maken
Beide containers hebben toegang nodig tot het Dev Proxy-certificaat. Maak een Docker-volume om het te delen:
docker volume create devproxy-cert
Het invoerpuntscript maken
Maak een entrypoint.sh script waarmee het Dev Proxy-certificaat wordt geïnstalleerd wanneer uw toepassingscontainer wordt gestart:
#!/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 "$@"
Maak het uitvoerbare script:
chmod +x entrypoint.sh
Het Dockerfile van de toepassing maken
Maak een Dockerfile voor uw toepassing die de vereisten voor certificaatinstallatie bevat:
# 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"]
De Docker Compose-configuratie maken
Maak een docker-compose.yaml bestand dat beide services definieert:
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:
Een Dev Proxy-configuratiebestand maken
Maak een devproxyrc.json bestand in dezelfde map als uw 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"
}
]
}
De containers starten
Start beide containers met Docker Compose:
docker compose up
Dev Proxy wordt eerst gestart en genereert het bijbehorende certificaat. Uw toepassingscontainer wacht op het certificaat, installeert het en start vervolgens de toepassing. Alle HTTP- en HTTPS-aanvragen van uw toepassing worden nu doorgestuurd via Dev Proxy.
Interactie met dev-proxy
Aangezien Dev Proxy wordt uitgevoerd in een container, kunt u er op verschillende manieren mee werken:
De terminal gebruiken
Koppelen aan de Dev Proxy-container:
docker attach <container-name>
De Dev Proxy-API gebruiken
De Dev Proxy-API wordt weergegeven op poort 8897. U kunt deze gebruiken om programmatisch dev proxy te beheren:
# Start recording
curl -X POST http://localhost:8897/proxy/recording/start
# Stop recording
curl -X POST http://localhost:8897/proxy/recording/stop
Zie Dev Proxy-API voor meer informatie.