一目了然
目標:在開發容器或 GitHub Codespaces 中安裝 Dev Proxy
時間: 10分鐘
先決條件:具有devcontainer.json檔案的專案,以及 Docker 或 GitHub Codespaces
如果你是在開發容器或 GitHub Codespaces 中開發,你可以透過 Dev Proxy Dev 容器功能安裝 Dev Proxy。 此功能會在容器中安裝開發代理,並在容器建立後,產生一個專屬於容器的開發代理根憑證,並信任該根憑證。 你不需要照 首次執行步驟,就能自行信任憑證。
將 Dev Proxy Feature 加入你的開發容器
要在你的開發容器中安裝 Dev Proxy,請在你的 features 檔案的 .devcontainer/devcontainer.json 區塊中新增 Dev Proxy 功能:
{
"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 選項。
配置功能
此功能支援以下選項:
| 選項 | Description | 類型 | 預設 |
|---|---|---|---|
version |
安裝 Dev Proxy 版本: latest、 beta,或特定版本如 4.0.0 或 v4.0.0。 |
字串 | latest |
trustCertificate |
容器建立後,產生一個專屬於容器的開發代理根憑證,並將其設為受信任,套用於整個系統及常見執行階段。 | boolean | true |
例如,要安裝特定版本的 Dev Proxy,請使用以下設定:
{
"features": {
"ghcr.io/dotnet/dev-proxy/dev-proxy:1": {
"version": "4.0.0"
}
}
}
要試用最新的預覽功能,請設定 version 為 beta。 當你安裝測試版時,這個功能也會新增這個 devproxy-beta 指令。
如果你在共享的開發容器設定中使用 Dev Proxy,可以考慮將 Dev Proxy 釘選到特定版本,而不是 latest 或 beta。 這樣一來,你就能確保所有參與專案的人都使用相同版本的 Dev Proxy。
該功能如何處理根憑證
Dev Proxy 使用根憑證來解密 HTTPS 流量。 功能在建立映像檔時不會產生憑證。 如果這麼做,憑證和私鑰就會落在映像層,所有使用相同映像檔或 Codespaces 預建程式的人都會共用同一個受信任的憑證授權中心。
相反地,容器建立後(postCreateCommand),功能:
- 以遠端使用者身份執行
devproxy cert ensure,產生容器獨有的根憑證。 - 將憑證加入系統憑證儲存庫(
/usr/local/share/ca-certificates),讓 curl、.NET 及其他使用系統儲存的工具信任它。
部分執行階段不使用系統憑證儲存區,因此此功能會設定以下環境變數,使其指向系統 CA 憑證套件(/etc/ssl/certs/ca-certificates.crt):
| 變數 | 使用對象 |
|---|---|
NODE_EXTRA_CA_CERTS |
Node.js |
REQUESTS_CA_BUNDLE |
Python requests |
SSL_CERT_FILE |
Python 及其他基於 OpenSSL 的工具 |
為了信任憑證,該功能會安裝一個 root 擁有的輔助腳本,並允許遠端使用者可使用 sudo 執行該腳本,且不需要密碼。 如果你不希望 Feature 產生並信任憑證,請將 trustCertificate 設為 false:
{
"features": {
"ghcr.io/dotnet/dev-proxy/dev-proxy:1": {
"trustCertificate": false
}
}
}
Important
這個功能不會設定 Java 金鑰庫,所以 Java 應用程式不信任開發代理的根憑證。
Python 3.13 及更新版本啟用嚴格憑證驗證,這會拒絕 Dev Proxy v3 及更早版本為攔截主機產生的憑證。 若要從 Python 3.13 或更新版本透過 Dev Proxy 呼叫 API,請使用 Dev Proxy v4 或更新版本。
在開發容器中使用 Dev Proxy
這個功能不會啟動開發 Proxy,也不會為整個容器設定 HTTP_PROXY 或 HTTPS_PROXY 環境變數。 容器範圍的代理變數會讓套件管理器、git 和 VS Code 自己的流量都經過 Dev Proxy,當 Dev Proxy 沒執行時就會讓它們壞掉。
要使用 Dev Proxy,請在開發容器中的終端機內,使用你的設定檔啟動它:
devproxy --config-file .devproxy/devproxyrc.json
接著,將你測試的應用程式設定為使用 Dev Proxy。 例如,要透過 Dev Proxy 路由 Node.js 應用程式的請求,請使用 HTTPS_PROXY 環境變數啟動應用程式:
HTTPS_PROXY=http://127.0.0.1:8000 npm start
想了解更多關於如何設定應用程式使用開發代理的資訊,請參閱你的技術堆疊指南,例如「在 Node.js 應用程式中使用開發代理」或「在.NET應用程式中使用開發代理」。
開發者 Proxy 工具組
此功能在開發容器中為 VS Code 新增了 Dev Proxy Toolkit 擴充功能。 如果你不想安裝擴充功能,請在你的 devcontainer.json 檔案中將其排除:
{
"features": {
"ghcr.io/dotnet/dev-proxy/dev-proxy:1": {}
},
"customizations": {
"vscode": {
"extensions": ["-garrytrinder.dev-proxy-toolkit"]
}
}
}
支援的圖片
此功能支援 x64 與 arm64 架構上以 Debian 和 Ubuntu 為基礎的映像檔。 Alpine 和其他基於 musl 的映像檔不受支援。