Bagikan melalui


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:

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.

  1. Dari jendela mulai Visual Studio, pilih Buat proyek baru.

  2. Pilih Aplikasi Web ASP.NET Core, lalu pilih Berikutnya.

  3. Masukkan nama untuk aplikasi baru Anda (atau gunakan nama default), tentukan lokasi pada disk, lalu pilih Berikutnya.

  4. Pilih versi .NET yang ingin Anda targetkan. Jika Anda tidak tahu, pilih rilis LTS (dukungan jangka panjang).

    Membuat proyek web - Layar informasi tambahan

  5. Pilih apakah Anda menginginkan dukungan SSL dengan memilih atau menghapus kotak centang Konfigurasi untuk HTTPS .

  6. Pilih kotak centang Aktifkan Dukungan Docker.

  7. Pilih jenis kontainer yang diinginkan (Windows atau Linux), lalu pilih Buat.

  1. Dari jendela mulai Visual Studio, pilih Buat proyek baru.

  2. Pilih Aplikasi Web ASP.NET Core, lalu pilih Berikutnya.

  3. Masukkan nama untuk aplikasi baru Anda (atau gunakan nama default), tentukan lokasi pada disk, lalu pilih Berikutnya.

  4. Pilih versi .NET yang ingin Anda targetkan. Jika Anda tidak tahu, pilih rilis LTS (dukungan jangka panjang).

    Membuat proyek web - Layar informasi tambahan

  5. Pilih apakah Anda menginginkan dukungan SSL dengan memilih atau menghapus kotak centang Konfigurasi untuk HTTPS .

  6. Pilih kotak centang Aktifkan Docker .

  7. 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.

  1. 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.

  2. 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 dalam Main 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.

  3. 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.

  4. Masuk ke halaman Indeks. Kami akan membuat perubahan pada halaman ini.

  5. Kembali ke Visual Studio dan buka Index.cshtml.

  6. Tambahkan konten HTML berikut ke akhir file, lalu simpan perubahan.

    <h1>Hello from a Docker container!</h1>
    
  7. 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.

  1. Di Visual Studio, buka Index.cshtml.cs.

  2. Ganti konten metode OnGet dengan kode berikut:

        ViewData["Message"] = "Your application description page from within a container";
    
  3. Di sebelah kiri baris kode, atur titik henti.

  4. Untuk memulai penelusuran kesalahan dan menemukan titik henti, tekan F5.

  5. Beralih ke Visual Studio untuk melihat titik henti. Periksa nilai.

    Cuplikan layar memperlihatkan bagian dari kode untuk Index.cshtml.cs di Visual Studio dengan titik henti diatur ke sebelah kiri baris kode yang disorot dengan warna kuning.

    Cuplikan layar memperlihatkan bagian dari kode untuk Index.cshtml.cs di Visual Studio dengan titik henti diatur ke sebelah kiri baris kode yang disorot dengan warna kuning.

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.

  1. Buat proyek aplikasi Konsol .NET Framework baru.
  2. 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

  1. Di Penjelajah Solusi, buka Program.cs.

  2. Ganti konten metode Main dengan kode berikut:

        System.Console.WriteLine("Hello, world!");
    
  3. Atur titik henti di sebelah kiri baris kode.

  4. Tekan F5 untuk memulai penelusuran kesalahan dan menemukan titik henti.

  5. Beralih ke Visual Studio untuk melihat titik henti dan memeriksa nilai.

    Cuplikan layar jendela kode untuk Program.cs di Visual Studio dengan titik henti diatur ke sebelah kiri baris kode yang disorot dengan warna kuning.

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.

Dapatkan detail selengkapnya dengan membaca Cara Visual Studio membangun aplikasi kontainer.

Selengkapnya tentang Docker dengan Visual Studio, Windows, dan Azure