한눈에 보기
목표: 개발 컨테이너 또는 GitHub Codespaces에 Dev Proxy 설치
시간: 10분
필수 구성 요소:devcontainer.json파일이 있는 프로젝트, Docker 또는 GitHub Codespaces
개발 컨테이너 또는 GitHub Codespaces에서 개발하는 경우 개발 프록시 개발 컨테이너 기능을 사용하여 개발 프록시를 설치할 수 있습니다. 이 기능은 컨테이너에 Dev Proxy를 설치하고 컨테이너를 만든 후 컨테이너에 고유한 Dev Proxy 루트 인증서를 생성하고 이를 신뢰하도록 설정합니다. 인증서를 직접 신뢰하기 위해 최초 실행 단계를 따를 필요가 없습니다.
개발 컨테이너에 Dev Proxy 기능을 추가하세요
Dev Proxy를 개발 컨테이너에 설치하려면 .devcontainer/devcontainer.json 파일의 features 섹션에 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 | Type | 기본값 |
|---|---|---|---|
version |
설치할 개발자 프록시 버전: 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"
}
}
}
최신 미리 보기 기능을 사용하려면 beta을(를) version로 설정하세요. 베타 버전을 설치하면 Feature에 devproxy-beta 명령도 추가됩니다.
공유 개발 컨테이너 구성에서 Dev Proxy를 사용하는 경우 beta 또는 latest 대신 특정 버전에 Dev Proxy를 고정하는 것이 좋습니다. 이렇게 하면 프로젝트에서 작업하는 모든 사용자가 동일한 버전의 Dev Proxy를 사용하도록 보장합니다.
기능이 루트 인증서를 처리하는 방법
개발자 프록시는 루트 인증서를 사용하여 HTTPS 트래픽을 복호화합니다. 이 기능은 이미지를 빌드할 때 인증서를 생성하지 않습니다. 이 경우 인증서와 해당 프라이빗 키가 이미지 계층에 포함되게 되고 동일한 이미지 또는 Codespaces 사전 빌드를 사용하는 모든 사용자가 동일한 신뢰할 수 있는 인증 기관을 공유하게 됩니다.
대신 컨테이너를 만든 후(postCreateCommand) 기능은:
- 원격 사용자로
devproxy cert ensure실행하여 컨테이너에 고유한 루트 인증서를 생성합니다. - 시스템 저장소를 사용하는 curl, .NET 및 기타 도구가 인증서를 신뢰하도록 시스템 인증서 저장소(
/usr/local/share/ca-certificates)에 인증서를 추가합니다.
일부 런타임은 시스템 인증서 저장소를 사용하지 않으므로 이 기능은 다음 환경 변수를 설정하여 런타임이 시스템 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로 암호 없이 이를 실행할 수 있도록 합니다. 기능이 인증서를 생성하고 신뢰하지 않도록 하려면 false을(를) trustCertificate(으)로 설정합니다:
{
"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 container에서 Dev Proxy 사용
이 Feature는 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 앱의 요청을 라우팅하려면 HTTPS_PROXY 환경 변수로 앱을 시작합니다.
HTTPS_PROXY=http://127.0.0.1:8000 npm start
Dev Proxy를 사용하도록 앱을 구성하는 방법에 대한 자세한 내용은 Node.js 애플리케이션에서 Dev Proxy 사용 또는 .NET 애플리케이션에서 Dev 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 기반 이미지는 지원되지 않습니다.
또한, 다음을 참조하세요.
Dev Proxy