Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Egy pillantással
Cél: Dev Proxy használata a Docker Compose használatával
Idő: 20 perc
Beépülő modulok: Különböző
Előfeltételek:Dev Proxy, Docker és Docker Compose telepítése
Ha a Dockerrel fejleszt alkalmazásokat, érdemes lehet a Dev Proxy használatával tesztelni, hogy az alkalmazás hogyan kezeli az API-hibákat, a szabályozást vagy az API-válaszokat. Ez a cikk bemutatja, hogyan használhatja a Dev Proxyt a Docker Compose használatával két forgatókönyvben:
- A gazdaszámítógépen futó fejlesztői proxy, egy tárolóban lévő alkalmazás
- Egy tárolóban futó fejlesztői proxy az alkalmazástároló mellett
1. forgatókönyv: Dev Proxy a gazdagépen, alkalmazás a tárolóban
Ebben a forgatókönyvben a Dev Proxyt közvetlenül a számítógépen futtatja, miközben az alkalmazás docker-tárolóban fut. Ez a megközelítés akkor hasznos, ha aktívan fejleszt, és közvetlenül szeretné használni a Dev Proxyt.
Az alkalmazástároló konfigurálása
Hozzon létre egy docker-compose.yaml fájlt, amely konfigurálja az alkalmazást a gazdagépen futó dev proxy használatára:
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"
Fejlesztői proxy indítása a gazdagépen
Az alkalmazástároló elindítása előtt indítsa el a Dev Proxyt a gazdagépen. MacOS és Linux rendszeren kösse a Dev Proxyt az összes hálózati adapterhez:
devproxy --ip-address 0.0.0.0
Windows rendszeren a Dev Proxyt a szokásos módon indíthatja el:
devproxy
TLS/SSL-tanúsítványok kezelése
Amikor az alkalmazás HTTPS-kérelmeket küld a Dev Proxyn keresztül, a tárolónak megbízhatónak kell lennie a Dev Proxy tanúsítványában. Két lehetőség áll rendelkezésre:
1. lehetőség: Tanúsítványérvényesítés letiltása (csak fejlesztés esetén)
A gyors teszteléshez letilthatja a tanúsítványérvényesítést az alkalmazásban. Node.js alkalmazások esetében állítsa be a NODE_TLS_REJECT_UNAUTHORIZED=0 környezeti változót (amely már szerepel az előző példában). .NET-alkalmazások esetén konfigurálhatja a HTTP-ügyfelet úgy, hogy kihagyja a tanúsítványérvényesítést.
Caution
Soha ne tiltsa le a tanúsítványérvényesítést az éles kódban.
2. lehetőség: Bízzon meg a tároló fejlesztői proxytanúsítványában
Az éles környezethez hasonló beállításhoz telepítse a Dev Proxy tanúsítványt a tárolódba. Először exportálja a tanúsítványt a gazdagépről, és adja hozzá a Docker image-hez. Részletes lépéseket a Dockerben futó .NET-alkalmazások fejlesztői proxy használata című témakörben talál.
Az alkalmazás indítása
Indítsa el az alkalmazástárolót:
docker compose up
Az alkalmazás mostantól az összes HTTP- és HTTPS-forgalmat a gazdagépen futó Dev Proxyn keresztül irányítja át.
2. forgatókönyv: Fejlesztői proxy és alkalmazás külön tárolókban
Ebben a fejlettebb forgatókönyvben a Dev Proxy és az alkalmazás is Docker-tárolókban fut. Ez a megközelítés CI/CD-folyamatok esetén, vagy teljes körű tárolóalapú fejlesztési környezet esetén hasznos.
A tanúsítványkötet létrehozása
Mindkét tárolónak hozzá kell férnie a Fejlesztői proxy tanúsítványhoz. Hozzon létre egy Docker-kötetet a megosztáshoz:
docker volume create devproxy-cert
A belépésipont-szkript létrehozása
Hozzon létre egy szkriptet entrypoint.sh , amely telepíti a Dev Proxy tanúsítványt az alkalmazástároló indításakor:
#!/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 "$@"
A szkript végrehajthatóvá tétele:
chmod +x entrypoint.sh
Az alkalmazás Dockerfile létrehozása
Hozzon létre egy Dockerfile az alkalmazás számára, amely tartalmazza a tanúsítványtelepítés előfeltételeit.
# 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"]
A Docker Compose konfigurációjának létrehozása
Hozzon létre egy docker-compose.yaml fájlt, amely mindkét szolgáltatást meghatározza:
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:
Fejlesztői proxy konfigurációs fájljának létrehozása
Hozzon létre egy devproxyrc.json fájlt ugyanabban a könyvtárban, mint a következő 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"
}
]
}
A tárolók indítása
Indítsa el mindkét tárolót a Docker Compose használatával:
docker compose up
A Dev Proxy először elindul, és létrehozza a tanúsítványát. Az alkalmazástároló megvárja a tanúsítványt, telepíti, majd elindítja az alkalmazást. Az alkalmazás minden HTTP- és HTTPS-kérését a dev proxy irányítja át.
A fejlesztői proxy használata
Mivel a Dev Proxy egy tárolóban fut, többféleképpen is használhatja:
A terminál használata
Csatolja a Dev Proxy tárolóhoz:
docker attach <container-name>
A Dev Proxy API használata
A Dev Proxy API a 8897-es porton érhető el. Használatával programozott módon vezérelheti a dev proxyt:
# Start recording
curl -X POST http://localhost:8897/proxy/recording/start
# Stop recording
curl -X POST http://localhost:8897/proxy/recording/stop
További információ: Dev Proxy API.