開発コンテナーと GitHub Codespaces で Dev Proxy を使用する

概要
目標: Dev Proxy を開発コンテナーまたは GitHub Codespaces にインストールする
時間: 10 分
前提条件:devcontainer.json ファイルがあるプロジェクト、Docker または GitHub Codespaces

開発コンテナーまたは GitHub Codespaces で開発する場合は、開発プロキシ開発コンテナー機能を使用して開発プロキシをインストールできます。 この機能では、コンテナーに開発プロキシがインストールされ、コンテナーが作成された後、コンテナーに固有の Dev Proxy ルート証明書が生成され、信頼されます。 証明書を自分で信頼するために、初回実行時の手順 に従う必要はありません。

開発コンテナーに開発プロキシ機能を追加する

開発コンテナーに開発プロキシをインストールするには、開発プロキシ機能を features ファイルの .devcontainer/devcontainer.json セクションに追加します。

{
  "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
  "features": {
    "ghcr.io/dotnet/dev-proxy/dev-proxy:1": {}
  }
}

変更を適用するには、コンテナーを再構築するか、新しいコードスペースを作成してください。 コンテナーが起動したら、Dev Proxy がインストールされていることを確認します。

devproxy --version

Note

この機能は、Dev Proxyとは別にバージョン管理されています。 ghcr.io/dotnet/dev-proxy/dev-proxy:1 は、フィーチャーのバージョン 1 を指します。 インストールする Dev Proxy のバージョンを選択するには、version オプションを使用します。

機能を設定する

この機能では、次のオプションがサポートされています。

Option Description タイプ Default
version インストールする開発プロキシのバージョン: latest、 beta、または 4.0.0 や v4.0.0などの特定のバージョン。 文字列 latest
trustCertificate コンテナーが作成されたら、コンテナーに固有の Dev Proxy ルート証明書を生成し、システム全体および共通ランタイムに対して信頼します。 boolean true

たとえば、特定のバージョンのDev Proxyをインストールするには、次の構成を使用します。

{
  "features": {
    "ghcr.io/dotnet/dev-proxy/dev-proxy:1": {
      "version": "4.0.0"
    }
  }
}

最新のプレビュー機能を試すには、version を beta に設定してください。 ベータ版をインストールすると、機能によって devproxy-beta コマンドも追加されます。

共有開発コンテナー構成で Dev Proxy を使用する場合は、latest や beta ではなく、Dev Proxy を特定のバージョンにピン留めすることを検討してください。 これにより、プロジェクトに取り組むすべてのユーザーが同じバージョンの Dev Proxy を使用できるようになります。

フィーチャーによるルート証明書の処理方法

開発プロキシでは、ルート証明書を使用して HTTPS トラフィックの暗号化を解除します。 この機能では、イメージのビルド時に証明書は生成されません。 その場合、証明書とその秘密キーは最終的にイメージ レイヤーに含まれることになり、同じイメージまたは Codespaces prebuild を使用するすべてのユーザーが同じ信頼された証明機関を共有することになります。

その代わり、コンテナーが作成された後 (postCreateCommand)、機能:

  1. devproxy cert ensureをリモート ユーザーで実行し、コンテナーに固有のルート証明書を生成します。
  2. システム証明書ストア (/usr/local/share/ca-certificates) に証明書を追加して、curl、.NET、およびシステム ストアを使用するその他のツールがその証明書を信頼するようにします。

一部のランタイムはシステム証明書ストアを使用しないため、機能によって、システム CA バンドル (/etc/ssl/certs/ca-certificates.crt) を指す次の環境変数が設定されます。

Variable によって使用される
NODE_EXTRA_CA_CERTS Node.js
REQUESTS_CA_BUNDLE Python requests
SSL_CERT_FILE Pythonおよびその他の OpenSSL ベースのツール

証明書を信頼するために、この機能はルート所有のヘルパー スクリプトをインストールし、リモート ユーザーがパスワードなしで sudo を使ってそのスクリプトを実行できるようにします。 機能で証明書を生成して信頼したくない場合は、trustCertificate を false に設定してください。

{
  "features": {
    "ghcr.io/dotnet/dev-proxy/dev-proxy:1": {
      "trustCertificate": false
    }
  }
}

Important

この機能ではJavaキーストアが構成されないため、JavaアプリはDev Proxyのルート証明書を信頼しません。

Python 3.13 以降では、厳密な証明書検証が有効になり、インターセプトされるホストに対して Dev Proxy v3 以前が生成する証明書は拒否されます。 Python 3.13 以降から Dev Proxy 経由で API を呼び出すには、Dev Proxy v4 以降を使用します。

開発コンテナーでDev Proxyを使用する

この機能は Dev Proxy を起動せず、コンテナー全体の HTTP_PROXY または HTTPS_PROXY 環境変数を設定しません。 コンテナー全体のプロキシ変数は、開発プロキシを介してパッケージ マネージャー、git、VS Code 独自のトラフィックをルーティングします。これにより、開発プロキシが実行されていないときにそれらが機能しなくなります。

Dev Proxy を使用するには、構成ファイルを使用して開発コンテナー内のターミナルで起動します。

devproxy --config-file .devproxy/devproxyrc.json

次に、開発プロキシを使用するようにテストするアプリを構成します。 たとえば、Node.js アプリからの要求を Dev Proxy 経由でルーティングするには、HTTPS_PROXY 環境変数を使用してアプリを開始します。

HTTPS_PROXY=http://127.0.0.1:8000 npm start

開発プロキシを使用するようにアプリを構成する方法の詳細については、Node.js アプリケーションで Dev Proxy を使用するや.NET アプリケーションで Dev Proxy を使用するなど、スタックのガイドを参照してください。

Dev Proxy Toolkit

この機能により、開発コンテナー内の VS Code に Dev Proxy Toolkit 拡張機能が追加されます。 拡張機能をインストールしない場合は、devcontainer.json ファイルで除外してください。

{
  "features": {
    "ghcr.io/dotnet/dev-proxy/dev-proxy:1": {}
  },
  "customizations": {
    "vscode": {
      "extensions": ["-garrytrinder.dev-proxy-toolkit"]
    }
  }
}

サポートされている画像

この機能は、Debian および Ubuntu ベースの x64 および arm64 イメージをサポートします。 Alpine やその他の musl ベースのイメージはサポートされていません。

参照