Condividi tramite


Usare Il proxy di sviluppo in un contenitore Docker

Quando si usa Dev Proxy, è possibile scegliere di eseguirlo direttamente nel computer o in un contenitore Docker. L'esecuzione di Dev Proxy in Docker è un ottimo modo per isolarlo dall'ambiente locale. Offre anche un modo coerente di usare Dev Proxy tra il computer locale e gli ambienti CI/CD.

Usare l'immagine Docker del proxy di sviluppo

Per praticità, è possibile usare un'immagine Docker con Il proxy di sviluppo. È possibile usarlo per eseguire Dev Proxy in un contenitore Docker. È possibile eseguire il pull dell'immagine dal Registro Contenitori GitHub usando il comando seguente:

docker pull ghcr.io/dotnet/dev-proxy:latest

Annotazioni

Per provare le funzionalità di anteprima più recenti, usare la versione beta del contenitore Dev Proxy.

docker pull ghcr.io/dotnet/dev-proxy:beta

Se si usa Dev Proxy in una pipeline CI/CD, è consigliabile usare una versione specifica dell'immagine, anziché latest o beta. In questo modo, è possibile assicurarsi che la pipeline non sia interessata da modifiche di rilievo introdotte nella versione più recente di Dev Proxy. Ad esempio, per usare Dev Proxy versione 0.26.0, usare il comando seguente:

docker pull ghcr.io/dotnet/dev-proxy:0.26.0

Avviare il contenitore Dev Proxy

Per avviare il contenitore Dev Proxy, usare il comando seguente:

docker run \
    # remove the container when it exits
    --rm \
    # run the container interactively
    -it \
    # map Dev Proxy ports to the host
    -p 8000:8000 -p 8897:8897 \
    # map volumes to the host. Create the `cert` folder in the current working directory before running the command
    -v ${PWD}:/config -v ${PWD}/cert:/home/devproxy/.config/dev-proxy/rootCert \
    # specify the image to use
    ghcr.io/dotnet/dev-proxy:0.26.0

Dopo aver eseguito il comando, Dev Proxy viene avviato automaticamente e rimane in ascolto del traffico sulla porta 8000. Poiché è in esecuzione in un contenitore Docker, non viene registrato automaticamente come proxy di sistema nell'host per intercettare le richieste Web. È invece necessario configurare manualmente il proxy di sistema nell'host o configurare il proxy per l'applicazione.

Eseguendo il contenitore in modo interattivo (usando le -it opzioni), è possibile controllare Dev Proxy dalla riga di comando. L'interazione con Dev Proxy è utile, ad esempio, per l'avvio e l'arresto della registrazione, la cancellazione dello schermo e così via. Se si avvia il contenitore in background, è comunque possibile controllare Dev Proxy usando l'API Dev Proxy.

Parametri

Il Docker del proxy di sviluppo contiene diversi parametri che è possibile usare per personalizzarne il comportamento.

Porte

L'immagine espone le porte seguenti:

  • 8000 : porta in cui Dev Proxy è in ascolto del traffico in ingresso.
  • 8897 : porta in cui Dev Proxy espone l'API. È possibile usarlo per interagire con il Dev Proxy programmaticamente.

Importante

Assicurarsi di eseguire il mapping di entrambe le porte all'host, in modo da poter accedere a Dev Proxy dal computer locale e usare Dev Proxy Toolkit.

Volumi

L'immagine espone i volumi seguenti:

  • /config : la directory di lavoro corrente da cui il contenitore avvia Dev Proxy. Se la cartella mappa contiene un devproxyrc.json file, Dev Proxy lo usa automaticamente per configurarlo.
  • /home/devproxy/.config/dev-proxy/rootCert : cartella in cui Dev Proxy archivia il certificato radice. Mappando il volume sul tuo host, puoi facilmente accedere al certificato root e installarlo nel tuo sistema o browser.

Suggerimento

In alternativa, per eseguire il mapping del certificato radice all'host, è possibile usare l'API Dev Proxy per scaricare la chiave pubblica del certificato radice nel formato PEM (Privacy Enhanced Mail). Per scaricare il certificato, chiamare l'endpoint GET http://127.0.0.1:8897/proxy/rootCertificate?format=crt .

Uso del proxy di sviluppo in Docker

Quando si avvia il contenitore Dev Proxy, avvia automaticamente Dev Proxy in ascolto del traffico in ingresso sulla porta 8000.

Configurazione predefinita

Dev Proxy cerca il devproxyrc.json file nella cartella di cui si esegue il mapping al /config volume. Se trova il file, lo usa per configurare se stesso. Se non trova il file, usa la configurazione predefinita.

Configurazione personalizzata

È possibile usare una configurazione personalizzata per Dev Proxy creando il file devproxyrc.json nella cartella che effettua il mapping con il volume /config. In alternativa, è possibile specificare il file di configurazione usando il --config-file parametro quando si avvia Dev Proxy. Ad esempio, per usare il myconfig.json file, usare il comando seguente:

docker run \
    # remove the container when it exits
    --rm \
    # run the container interactively
    -it \
    # map Dev Proxy ports to the host
    -p 8000:8000 -p 8897:8897 \
    # map volumes to the host. Create the `cert` folder in the current working directory before running the command
    -v ${PWD}:/config -v ${PWD}/cert:/home/devproxy/.config/dev-proxy/rootCert \
    # specify the image to use
    ghcr.io/dotnet/dev-proxy:0.26.0 \
    # specify the configuration file to use
    --config-file /config/myconfig.json

Il file di configurazione specificato deve essere accessibile dal contenitore. Se si usa un percorso relativo, deve essere relativo al /config volume.

Altre opzioni

Se si vogliono usare altre opzioni, è possibile specificarle nello stesso modo in cui si farebbe quando si esegue Dev Proxy direttamente nel computer. Ad esempio, per specificare gli URL da controllare, usare il comando seguente:

docker run \
    # remove the container when it exits
    --rm \
    # run the container interactively
    -it \
    # map Dev Proxy ports to the host
    -p 8000:8000 -p 8897:8897 \
    # map volumes to the host. Create the `cert` folder in the current working directory before running the command
    -v ${PWD}:/config -v ${PWD}/cert:/home/devproxy/.config/dev-proxy/rootCert \
    # specify the image to use
    ghcr.io/dotnet/dev-proxy:0.26.0 \
    # specify the URLs to watch
    --urls-to-watch "https://example.com/*"