Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На первый взгляд
Цель: Установить Dev Proxy в контейнере разработки или GitHub Codespaces
Время: 10 минут
Предварительные требования: Проект с файломdevcontainer.json, Docker или GitHub Codespaces
При разработке в контейнере разработки или в GitHub Codespaces можно установить Dev Proxy с помощью функции контейнера разработки Dev Proxy. Компонент устанавливает Dev Proxy в контейнере и после создания контейнера создает корневой сертификат Dev Proxy, уникальный для контейнера, и делает его доверенным. Вам не нужно выполнять действия при первом запуске, чтобы самостоятельно добавить сертификат в доверенные.
Добавьте функцию Dev Proxy в контейнер разработки
Чтобы установить Dev Proxy в контейнере разработки, добавьте Feature Dev Proxy в раздел features файла .devcontainer/devcontainer.json:
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/dotnet/dev-proxy/dev-proxy:1": {}
}
}
Перестройте контейнер или создайте новый codespace, чтобы применить это изменение. После запуска контейнера убедитесь, что Dev Proxy установлен:
devproxy --version
Note
Эта функция имеет отдельное версионирование от Dev Proxy.
ghcr.io/dotnet/dev-proxy/dev-proxy:1 относится к версии 1 Feature. Чтобы выбрать версию Dev Proxy для установки, используйте параметр version.
Настроить функцию
Функция поддерживает следующие параметры:
| Вариант | Description | Type | По умолчанию |
|---|---|---|---|
version |
Версия Dev Proxy для установки: latest, beta или определенная версия, например 4.0.0 или v4.0.0. |
string | latest |
trustCertificate |
После создания контейнера создайте корневой сертификат Dev Proxy, уникальный для контейнера, и добавьте его в доверенные на уровне системы и в распространённых средах выполнения. | boolean | true |
Например, чтобы установить определенную версию Dev Proxy, используйте следующую конфигурацию:
{
"features": {
"ghcr.io/dotnet/dev-proxy/dev-proxy:1": {
"version": "4.0.0"
}
}
}
Чтобы попробовать новейшие предварительные возможности, установите version в значение beta. При установке бета-версии Feature также добавляет команду 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 и другие средства, использующие системное хранилище, доверяли ему.
Некоторые среды выполнения не используют системное хранилище сертификатов, поэтому функция задает следующие переменные среды, чтобы указать им на системный набор сертификатов УЦ (/etc/ssl/certs/ca-certificates.crt):
| Переменная | Используется кем |
|---|---|
NODE_EXTRA_CA_CERTS |
Node.js |
REQUESTS_CA_BUNDLE |
Python requests |
SSL_CERT_FILE |
Python и другие средства на основе OpenSSL |
Чтобы доверять сертификату, компонент устанавливает вспомогательный скрипт, принадлежащий пользователю root, и позволяет удаленному пользователю запускать его с помощью 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 и более ранними версиями для перехватываемых узлов. Чтобы вызывать API через Dev Proxy из Python 3.13 или более поздней версии, используйте Dev Proxy v4 или более поздней версии.
Используйте Dev Proxy в контейнере разработки
Функция не запускает прокси разработки и не задает переменные среды HTTP_PROXY или HTTPS_PROXY для всего контейнера. Переменные прокси-сервера на уровне контейнера будут направлять диспетчеры пакетов, git и собственный трафик VS Code через Dev Proxy, из-за чего они перестают работать, когда Dev Proxy не запущен.
Чтобы использовать Dev Proxy, запустите его в терминале в контейнере разработки с помощью файла конфигурации:
devproxy --config-file .devproxy/devproxyrc.json
Затем настройте приложение, которое вы тестируете, для использования Dev Proxy. Например, чтобы маршрутизировать запросы из приложения Node.js через Dev Proxy, запустите приложение с переменной среды HTTPS_PROXY:
HTTPS_PROXY=http://127.0.0.1:8000 npm start
Дополнительные сведения о настройке приложения для использования Dev Proxy см. в руководстве для вашего стека, например Использование Dev Proxy с приложениями Node.js или Использование Dev Proxy с приложениями .NET.
Набор инструментов прокси разработки
Эта функция добавляет расширение Dev Proxy Toolkit в VS Code в контейнере разработки. Если вы не хотите установить расширение, исключите его в файле devcontainer.json :
{
"features": {
"ghcr.io/dotnet/dev-proxy/dev-proxy:1": {}
},
"customizations": {
"vscode": {
"extensions": ["-garrytrinder.dev-proxy-toolkit"]
}
}
}
Поддерживаемые изображения
Функция поддерживает образы Debian и основанные на Ubuntu для x64 и arm64. Образы Alpine и другие образы на основе musl не поддерживаются.