次の方法で共有


Docker コンテナーで開発プロキシを使用する

概要
目標: Docker で開発プロキシを実行する
時間: 15 分
プラグイン: 各種
前提 条件: Docker がインストールされている

開発プロキシを使用する場合は、コンピューターまたは Docker コンテナーで直接実行できます。 Docker で開発プロキシを実行することは、ローカル環境から分離するための優れた方法です。 また、ローカル コンピューターと CI/CD 環境の間で開発プロキシを使用する一貫した方法も提供されます。

Dev Proxy Docker イメージを使用する

便宜上、開発プロキシで Docker イメージを使用する準備が整っています。 これを使用して、Docker コンテナーで開発プロキシを実行できます。 次のコマンドを使用して、GitHub Container Registry からイメージをプルできます。

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

最新のプレビュー機能を試すには、開発プロキシ コンテナーのベータ 版を使用します。

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

CI/CD パイプラインで開発プロキシを使用する場合は、 latest または betaではなく、イメージの特定のバージョンを使用することを検討してください。 これにより、最新バージョンの開発プロキシで導入された重大な変更によってパイプラインが影響を受けないようにすることができます。 たとえば、開発プロキシ バージョン 0.26.0 を使用するには、次のコマンドを使用します。

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

開発プロキシ コンテナーを起動する

開発プロキシ コンテナーを開始するには、次のコマンドを使用します。

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

コマンドを実行すると、開発プロキシが自動的に起動し、ポート 8000 でトラフィックをリッスンします。 Docker コンテナーで実行されているため、Web 要求をインターセプトするためにホスト上のシステム プロキシとして自動的に登録されることはありません。 代わりに、ホストでシステム プロキシを手動で構成するか、アプリケーションのプロキシを構成する必要があります。

( -it オプションを使用して) コンテナーを対話形式で実行することで、コマンド ラインから開発プロキシを制御できます。 Dev Proxy との対話は、たとえば、記録の開始と停止、画面のクリアなどに役立ちます。バックグラウンドでコンテナーを開始する場合でも、開発プロキシ API を使用して 開発プロキシを制御できます。

パラメーター

開発プロキシ Docker には、動作をカスタマイズするために使用できるいくつかのパラメーターが含まれています。

ポート

このイメージでは、次のポートが公開されています。

  • 8000 - Dev Proxy が受信トラフィックをリッスンするポート。
  • 8897 - 開発プロキシがその API を公開するポート。 これを使用して、プログラムで開発プロキシと対話できます。

重要

ローカル コンピューターから Dev Proxy にアクセスし、 Dev Proxy Toolkit を使用できるように、両方のポートをホストにマップしてください。

ボリューム

このイメージでは、次のボリュームが表示されます。

  • /config - コンテナーが開発プロキシを起動する現在の作業ディレクトリ。 マップするフォルダーに devproxyrc.json ファイルが含まれている場合、Dev Proxy は自動的にこれを使用して自身を構成します。
  • /home/devproxy/.config/dev-proxy/rootCert - Dev Proxy がルート証明書を格納するフォルダー。 ボリュームをホストにマッピングすることで、ルート証明書に簡単にアクセスし、システムまたはブラウザーにインストールできます。

ヒント

ルート証明書をホストにマッピングする代わりに、Dev Proxy API を使用して、PEM (プライバシー強化メール) 形式で ルート証明書の公開キーをダウンロード することもできます。 証明書をダウンロードするには、 GET http://127.0.0.1:8897/proxy/rootCertificate?format=crt エンドポイントを呼び出します。

Docker での開発プロキシの使用

開発プロキシ コンテナーを起動すると、ポート 8000 で受信トラフィックをリッスンする Dev Proxy が自動的に開始されます。

既定の構成

開発プロキシは、devproxyrc.json ボリュームにマップするフォルダー内の/config ファイルを検索します。 ファイルが見つかると、それを使用して自身を構成します。 ファイルが見つからない場合は、既定の構成が使用されます。

カスタム構成

devproxyrc.json ボリュームにマップするフォルダーに/config ファイルを作成することで、開発プロキシのカスタム構成を使用できます。 または、開発プロキシを起動するときに、 --config-file パラメーターを使用して構成ファイルを指定することもできます。 たとえば、 myconfig.json ファイルを使用するには、次のコマンドを使用します。

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

指定する構成ファイルには、コンテナーからアクセスできる必要があります。 相対パスを使用する場合は、 /config ボリュームに対する相対パスである必要があります。

その他のオプション

他のオプションを使用する場合は、マシンで開発プロキシを直接実行する場合と同じ方法で指定できます。 たとえば、監視する URL を指定するには、次のコマンドを使用します。

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/*"

こちらも参照ください