Menggunakan Dev Proxy dalam kontainer dev dan GitHub Codespaces

Sekilas
Tujuan: Menginstal Dev Proxy di kontainer dev atau GitHub Codespaces
Waktu: 10 menit
Prasyarat: Proyek dengan file devcontainer.json, Docker, atau GitHub Codespaces

Jika Anda mengembangkan dalam kontainer dev atau di GitHub Codespaces, Anda dapat menginstal Dev Proxy dengan menggunakan Dev Proxy Dev Container Feature. Fitur menginstal Dev Proxy dalam kontainer dan, setelah kontainer dibuat, menghasilkan sertifikat akar Dev Proxy yang unik untuk kontainer dan mempercayainya. Anda tidak perlu mengikuti langkah-langkah saat pertama kali menjalankan aplikasi untuk memercayai sertifikat sendiri.

Menambahkan Fitur Dev Proxy ke kontainer dev Anda

Untuk menginstal Dev Proxy di kontainer dev Anda, tambahkan Fitur Dev Proxy ke bagian features dari file .devcontainer/devcontainer.json Anda:

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

Bangun ulang kontainer, atau buat codespace baru, untuk menerapkan perubahan. Setelah kontainer dimulai, verifikasi bahwa Dev Proxy diinstal:

devproxy --version

Note

Fitur ini memiliki versi terpisah dari Dev Proxy. ghcr.io/dotnet/dev-proxy/dev-proxy:1 mengacu pada versi 1 dari Feature. Untuk memilih versi Dev Proxy mana yang akan diinstal, gunakan opsi version.

Konfigurasikan Fitur

Fitur ini mendukung opsi berikut:

Opsi Description Type Default
version Versi Dev Proxy untuk menginstal: latest, beta, atau versi tertentu seperti 4.0.0 atau v4.0.0. string latest
trustCertificate Setelah kontainer dibuat, buat sertifikat akar Dev Proxy yang unik untuk kontainer dan tambahkan ke daftar tepercaya sistem serta untuk runtime umum. boolean true

Misalnya, untuk menginstal versi Dev Proxy tertentu, gunakan konfigurasi berikut:

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

Untuk mencoba fitur pratinjau terbaru, atur version ke beta. Saat Anda menginstal versi beta, Fitur juga menambahkan devproxy-beta perintah .

Jika Anda menggunakan Dev Proxy dalam konfigurasi kontainer dev bersama, pertimbangkan untuk menyematkan Dev Proxy ke versi tertentu, bukan latest atau beta. Dengan cara ini, Anda memastikan bahwa semua orang yang mengerjakan proyek menggunakan versi Dev Proxy yang sama.

Cara Fitur menangani sertifikat akar

Dev Proxy menggunakan sertifikat akar untuk mendekripsi lalu lintas HTTPS. Fitur tidak menghasilkan sertifikat saat membuat image. Jika ya, sertifikat dan kunci privatnya akan berakhir di lapisan gambar, dan semua orang yang menggunakan gambar atau prebuild Codespaces yang sama akan berbagi otoritas sertifikat tepercaya yang sama.

Sebagai gantinya, setelah kontainer dibuat (postCreateCommand), Fitur:

  1. Menjalankan devproxy cert ensure sebagai pengguna jarak jauh untuk menghasilkan sertifikat akar yang unik untuk kontainer.
  2. Menambahkan sertifikat ke penyimpanan sertifikat sistem (/usr/local/share/ca-certificates), sehingga curl, .NET, dan alat lain yang menggunakan penyimpanan sistem mempercayainya.

Beberapa runtime tidak menggunakan penyimpanan sertifikat sistem, sehingga Fitur mengatur variabel lingkungan berikut untuk mengarahkannya ke bundel CA sistem (/etc/ssl/certs/ca-certificates.crt):

Variabel Digunakan oleh
NODE_EXTRA_CA_CERTS Node.js
REQUESTS_CA_BUNDLE Python requests
SSL_CERT_FILE Python dan alat berbasis OpenSSL lainnya

Untuk mempercayai sertifikat, Fitur menginstal skrip pembantu milik root dan memungkinkan pengguna jarak jauh untuk menjalankannya dengan sudo tanpa kata sandi. Jika Anda tidak ingin Fitur menghasilkan dan mempercayai sertifikat, atur trustCertificate ke false:

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

Important

Fitur tidak mengonfigurasi keystores Java, sehingga aplikasi Java tidak mempercayai sertifikat akar Proksi Dev.

Python 3.13 dan yang lebih baru mengaktifkan verifikasi sertifikat yang ketat, yang menolak sertifikat yang dibuat oleh Dev Proxy v3 dan sebelumnya untuk host yang dicegat. Untuk memanggil API melalui Dev Proxy dari Python 3.13 atau yang lebih baru, gunakan Dev Proxy v4 atau yang lebih baru.

Menggunakan Dev Proxy di kontainer dev

Fitur tidak memulai Dev Proxy, dan tidak mengatur variabel lingkungan HTTP_PROXY atau HTTPS_PROXY untuk seluruh kontainer. Variabel proksi di seluruh kontainer akan merutekan manajer paket, git, dan lalu lintas VS Code sendiri melalui Dev Proxy, yang membuat semuanya tidak berfungsi saat Dev Proxy tidak berjalan.

Untuk menggunakan Dev Proxy, mulai jalankan Dev Proxy di terminal di kontainer dev dengan file konfigurasi Anda:

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

Kemudian, konfigurasikan aplikasi yang Anda uji untuk menggunakan Dev Proxy. Misalnya, untuk merutekan permintaan dari aplikasi Node.js melalui Dev Proxy, mulai aplikasi dengan variabel lingkungan HTTPS_PROXY:

HTTPS_PROXY=http://127.0.0.1:8000 npm start

Untuk informasi selengkapnya tentang mengonfigurasi aplikasi Anda untuk menggunakan Dev Proxy, lihat panduan untuk tumpukan Anda, seperti Menggunakan Dev Proxy dengan aplikasi Node.js atau Menggunakan Dev Proxy dengan aplikasi .NET.

Dev Toolkit Proksi

Fitur menambahkan ekstensi Dev Proxy Toolkit ke VS Code di kontainer pengembangan. Jika Anda tidak ingin menginstal ekstensi, kecualikan ekstensi tersebut dalam file devcontainer.json Anda:

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

Gambar yang didukung

Fitur ini mendukung image berbasis Debian dan Ubuntu pada x64 dan arm64. Alpine dan image berbasis musl lainnya tidak didukung.

Baca juga