Men-debug aplikasi di kontainer Docker lokal
Visual Studio menyediakan cara yang konsisten untuk mengembangkan kontainer Docker dan memvalidasi aplikasi Anda secara lokal. Anda dapat menjalankan dan men-debug aplikasi Anda di kontainer Windows atau Linux yang berjalan di desktop Windows lokal Anda dengan Docker terpasang, dan Anda tidak perlu memulai ulang kontainer setiap kali Anda membuat perubahan pada kode.
Artikel ini menggambarkan cara menggunakan Visual Studio untuk memulai aplikasi di kontainer Docker lokal, membuat perubahan, lalu me-refresh browser untuk melihat perubahan. Artikel ini juga menunjukkan cara mengatur titik henti untuk penelusuran kesalahan aplikasi kontainer. Jenis proyek yang didukung termasuk aplikasi web, aplikasi konsol, dan fungsi Azure yang menargetkan .NET Framework dan .NET Core. Contoh yang disajikan dalam artikel ini, adalah proyek jenis Aplikasi Web ASP.NET Core dan proyek jenis Aplikasi Konsol (.NET Framework).
Jika Anda sudah memiliki proyek dengan jenis yang didukung, Visual Studio dapat membuat Dockerfile dan mengonfigurasi proyek Anda untuk dijalankan dalam kontainer. Lihat Alat Kontainer di Visual Studio.
Prasyarat
Untuk men-debug aplikasi di kontainer Docker lokal, alat berikut harus dipasang:
- Visual Studio 2019 dengan beban Pengembangan Web yang terpasang
- Visual Studio 2022 dengan beban kerja Pengembangan Web yang terpasang
Untuk menjalankan kontainer Docker secara lokal, Anda harus memiliki klien Docker lokal. Anda dapat menggunakan Desktop Docker, yang memerlukan Windows 10 atau yang lebih baru.
Membuat aplikasi web
Jika Anda memiliki proyek dan telah menambahkan dukungan Docker seperti yang dijelaskan dalam gambaran umum, lewati bagian ini.
Dari jendela mulai Visual Studio, pilih Buat proyek baru.
Pilih Aplikasi Web ASP.NET Core, lalu pilih Berikutnya.
Masukkan nama untuk aplikasi baru Anda (atau gunakan nama default), tentukan lokasi pada disk, lalu pilih Berikutnya.
Pilih versi .NET yang ingin Anda targetkan. Jika Anda tidak tahu, pilih rilis LTS (dukungan jangka panjang).
Pilih apakah Anda menginginkan dukungan SSL dengan memilih atau menghapus kotak centang Konfigurasi untuk HTTPS .
Pilih kotak centang Aktifkan Dukungan Docker.
Pilih jenis kontainer yang diinginkan (Windows atau Linux), lalu pilih Buat.
Dari jendela mulai Visual Studio, pilih Buat proyek baru.
Pilih Aplikasi Web ASP.NET Core, lalu pilih Berikutnya.
Masukkan nama untuk aplikasi baru Anda (atau gunakan nama default), tentukan lokasi pada disk, lalu pilih Berikutnya.
Pilih versi .NET yang ingin Anda targetkan. Jika Anda tidak tahu, pilih rilis LTS (dukungan jangka panjang).
Pilih apakah Anda menginginkan dukungan SSL dengan memilih atau menghapus kotak centang Konfigurasi untuk HTTPS .
Pilih kotak centang Aktifkan Docker .
Di kotak teks Docker OS, pilih jenis kontainer yang diinginkan (Windows atau Linux), lalu pilih Buat.
Edit halaman Razor Anda dan refresh
Untuk mengulangi perubahan dengan cepat di halaman Razor, Anda dapat memulai aplikasi di kontainer. Kemudian, lanjutkan membuat perubahan, menampilkannya seperti yang Anda lakukan dengan IIS Express.
Pastikan Docker disiapkan untuk menggunakan jenis kontainer (Linux atau Windows) yang Anda gunakan. Klik kanan pada ikon Docker di Taskbar, dan pilih Beralih ke kontainer Linux atau Beralih ke kontainer Windows yang sesuai.
Mengedit kode Anda dan menyegarkan situs yang sedang berjalan seperti yang dijelaskan di bagian ini tidak diaktifkan dalam templat default di .NET Core dan .NET 5 dan yang lebih baru. Untuk mengaktifkannya, tambahkan paket NuGet Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation. Tambahkan panggilan ke metode ekstensi AddRazorRuntimeCompilation ke kode dalam
Startup.ConfigureServices
metode . Anda hanya memerlukan ini diaktifkan dalam mode DEBUG, jadi kodekan sebagai berikut dalamMain
metode :// Add services to the container. var mvcBuilder = builder.Services.AddRazorPages(); #if DEBUG if (Env.IsDevelopment()) { mvcBuilder.AddRazorRuntimeCompilation(); } #endif
Untuk informasi selengkapnya, lihat Kompilasi file Razor di ASP.NET Core. Kode yang tepat mungkin bervariasi, tergantung pada kerangka kerja target dan templat proyek yang Anda gunakan.
Atur Konfigurasi Solusi ke Debug. Kemudian, tekan Ctrl+F5 untuk menyusun gambar Docker dan menjalankannya secara lokal.
Saat gambar kontainer dibangun dan berjalan dalam kontainer Docker, Visual Studio meluncurkan aplikasi web di browser default Anda.
Masuk ke halaman Indeks. Kami akan membuat perubahan pada halaman ini.
Kembali ke Visual Studio dan buka Index.cshtml.
Tambahkan konten HTML berikut ke akhir file, lalu simpan perubahan.
<h1>Hello from a Docker container!</h1>
Di jendela output, ketika build .NET selesai dan Anda melihat baris berikut, beralih kembali ke browser Anda dan refresh halaman:
Now listening on: http://*:80 Application started. Press Ctrl+C to shut down.
Perubahan Anda telah diterapkan!
Men-debug dengan titik henti
Perubahan sering kali memerlukan pemeriksaan lebih lanjut. Anda dapat menggunakan fitur penelusuran kesalahan Visual Studio untuk tugas ini.
Di Visual Studio, buka Index.cshtml.cs.
Ganti konten metode
OnGet
dengan kode berikut:ViewData["Message"] = "Your application description page from within a container";
Di sebelah kiri baris kode, atur titik henti.
Untuk memulai penelusuran kesalahan dan menemukan titik henti, tekan F5.
Beralih ke Visual Studio untuk melihat titik henti. Periksa nilai.
Membuat aplikasi konsol .NET Framework
Bagian ini menyajikan cara men-debug proyek aplikasi konsol .NET Framework di wadah Docker lokal dengan terlebih dahulu menunjukkan cara menambahkan dukungan Docker ke proyek. Penting untuk diketahui bahwa jenis proyek yang berbeda memiliki tingkat dukungan Docker yang berbeda. Bahkan ada tingkat dukungan Docker yang berbeda untuk proyek aplikasi konsol .NET Core (termasuk .NET 5 dan yang lebih baru) versus proyek aplikasi konsol .NET Framework.
Saat proyek aplikasi konsol .NET Framework dibuat, tidak ada opsi untuk mengaktifkan dukungan Docker. Setelah membuat proyek seperti itu, tidak ada cara untuk secara eksplisit menambahkan dukungan Docker ke proyek. Untuk proyek aplikasi konsol .NET Framework, Anda dapat menambahkan dukungan untuk orkestrasi container. Efek samping menambahkan dukungan orkestrasi ke proyek aplikasi konsol .NET Framework adalah menambahkan dukungan Docker ke proyek.
Prosedur berikut menunjukkan cara menambahkan dukungan orkestrasi ke proyek aplikasi konsol .NET Framework, yang selanjutnya menambahkan dukungan Docker ke proyek dan memungkinkan proyek untuk di-debug dalam wadah Docker lokal.
- Buat proyek aplikasi Konsol .NET Framework baru.
- Di Penjelajah Solusi, klik kanan node proyek, lalu pilih Tambahkan>Dukungan Orkestrasi Kontainer. Dalam kotak dialog yang muncul, pilih Docker Compose. Dockerfile ditambahkan ke proyek Anda dan proyek Docker Compose dengan file dukungan terkait ditambahkan.
Men-debug dengan titik henti
Di Penjelajah Solusi, buka Program.cs.
Ganti konten metode
Main
dengan kode berikut:System.Console.WriteLine("Hello, world!");
Atur titik henti di sebelah kiri baris kode.
Tekan F5 untuk memulai penelusuran kesalahan dan menemukan titik henti.
Beralih ke Visual Studio untuk melihat titik henti dan memeriksa nilai.
Mengautentikasi ke layanan Azure menggunakan proksi token
Saat menggunakan layanan Azure dari kontainer, Anda dapat menggunakan DefaultAzureCredential (dengan VisualStudioCredential diaktifkan) untuk mengautentikasi dengan layanan Azure dengan akun Microsoft Entra Anda tanpa konfigurasi tambahan dalam kontainer. Untuk mengaktifkan ini, lihat Cara mengonfigurasi Alat Kontainer Visual Studio. Selain itu, Anda perlu menyiapkan autentikasi Azure di Visual Studio dengan mengikuti instruksi di Mengautentikasi Visual Studio dengan Azure. Dukungan untuk VisualStudioCredential dalam kontainer tersedia di Visual Studio versi 17.6 dan yang lebih baru.
Azure Functions
Jika Anda men-debug proyek Azure Functions terintegrasi dan menggunakan proksi token dalam kontainer untuk menangani autentikasi ke layanan Azure, Anda perlu menyalin runtime .NET ke kontainer agar proksi token berjalan. Jika Anda men-debug proyek Azure Functions yang terisolasi, proyek tersebut sudah memiliki runtime .NET, jadi tidak perlu langkah tambahan ini.
Untuk memastikan runtime .NET tersedia untuk proksi token, tambahkan, atau ubah debug
lapisan di Dockerfile yang menyalin runtime .NET ke dalam gambar kontainer. Untuk kontainer Linux, Anda dapat menambahkan kode berikut ke Dockerfile:
# This layer is to support debugging, VS's Token Proxy requires the runtime to be installed in the container
FROM mcr.microsoft.com/dotnet/runtime:8.0 AS runtime
FROM base as debug
COPY --from=runtime /usr/share/dotnet /usr/share/dotnet
RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
Selain itu, dalam proyek Visual Studio, Anda perlu membuat beberapa perubahan untuk menentukan ini sebagai lapisan yang akan digunakan saat penelusuran kesalahan dalam Mode Cepat. Untuk penjelasan tentang Mode Cepat, lihat Menyesuaikan kontainer Docker di Visual Studio. Untuk skenario kontainer tunggal (bukan Docker Compose), atur properti DockerfileFastModeStage
MSBuild ke debug
untuk menggunakan lapisan tersebut untuk penelusuran kesalahan. Untuk Docker Compose, ubah docker-compose.vs.debug.yml
sebagai berikut:
# Set the stage to debug to use an image with the .NET runtime in it
services:
functionappintegrated:
build:
target: debug
Untuk sampel kode autentikasi dengan Azure Functions, termasuk skenario terintegrasi dan terisolasi, lihat VisualStudioCredentialExample.
Penggunaan kembali kontainer
Saat Anda menggunakan Mode Cepat, yang biasanya digunakan Visual Studio untuk konfigurasi Debug, Visual Studio hanya membangun kembali gambar kontainer Anda dan kontainer itu sendiri saat Anda mengubah Dockerfile. Jika Anda tidak mengubah Dockerfile, Visual Studio menggunakan kembali kontainer dari eksekusi sebelumnya.
Jika Anda memodifikasi kontainer secara manual dan ingin memulai ulang dengan gambar kontainer yang bersih, gunakan perintah Build>Bersih di Visual Studio, lalu bangun seperti biasa.
Saat Anda tidak menggunakan Mode Cepat, yang khas untuk konfigurasi Rilis, Visual Studio membangun kembali kontainer setiap kali proyek dibuat.
Anda dapat mengonfigurasi kapan Mode Cepat digunakan; lihat Cara mengonfigurasi Alat Kontainer Visual Studio.
Pecahkan masalah
Pelajari cara memecahkan masalah pengembangan Docker Visual Studio.
Konten terkait
Dapatkan detail selengkapnya dengan membaca Cara Visual Studio membangun aplikasi kontainer.
Selengkapnya tentang Docker dengan Visual Studio, Windows, dan Azure
- Pelajari selengkapnya tentang pengembangan kontainer dengan Visual Studio.
- Untuk membangun dan menyebarkan kontainer Docker, lihat Integrasi Docker untuk Alur Azure.
- Untuk indeks artikel Windows Server dan Nano Server, lihat Informasi kontainer Windows.
- Pelajari tentang Azure Kubernetes Service dan tinjau dokumentasi Azure Kubernetes Service.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk