Mulai cepat: Docker di Visual Studio

Dengan Visual Studio, Anda dapat dengan mudah membuat, men-debug, dan menjalankan aplikasi .NET, ASP.NET, dan ASP.NET Core dalam kontainer dan menerbitkannya ke Azure Container Registry, Docker Hub, Azure App Service, atau Container Registry Anda sendiri. Dalam artikel ini, kami akan menerbitkan aplikasi ASP.NET Core ke Azure Container Registry.

Prasyarat

Penginstalan dan konfigurasi

Untuk penginstalan Docker, pertama-tama tinjau informasi di Desktop Docker untuk Windows: Apa yang perlu diketahui sebelum Anda menginstal. Berikutnya, pasang Desktop Docker.

Menambahkan proyek ke kontainer Docker

  1. Buat proyek baru menggunakan templat Aplikasi Web ASP.NET Core atau jika Anda ingin menggunakan .NET Framework daripada .NET Core, pilih Aplikasi Web ASP.NET (.NET Framework).

  2. Pada layar Buat aplikasi web baru, pastikan kotak centang Aktifkan Dukungan Docker dipilih.

    Cuplikan layar kotak centang Aktifkan Dukungan Docker.

    Cuplikan layar menunjukkan .NET Core; jika Anda menggunakan .NET Framework, tampilannya sedikit berbeda.

  3. Pilih jenis kontainer yang diinginkan (Windows atau Linux) dan klik Buat.

Gambaran umum Dockerfile

Dockerfile, resep untuk membuat gambar Docker akhir, dibuat dalam proyek. Lihat referensi Dockerfile untuk pemahaman tentang perintah di dalamnya:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "WebApplication1/WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "WebApplication1.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

Dockerfile sebelumnya didasarkan pada gambar microsoft/aspnetcore, dan menyertakan instruksi untuk memodifikasi gambar dasar dengan membangun proyek Anda dan menambahkannya ke kontainer. Jika Anda menggunakan .NET Framework, gambar dasar akan berbeda.

Saat kotak centang Konfigurasi untuk HTTPS dialog proyek baru dicentang, Dockerfile mengekspos dua port. Satu port digunakan untuk lalu lintas HTTP; port lainnya digunakan untuk HTTPS. Jika kotak centang tidak dicentang, satu port (80) diekspos untuk lalu lintas HTTP.

Debug

Pilih Docker dari daftar dropdown debug di toolbar, dan mulai debugging aplikasi. Anda mungkin melihat pesan dengan permintaan untuk memercayai sertifikat; pilih percaya sertifikat untuk melanjutkan.

Opsi Alat Kontainer di jendela Output menunjukkan tindakan yang sedang dilakukan. Pertama kali, mungkin perlu beberapa saat untuk mengunduh gambar dasar, tetapi pada proses berikutnya akan jauh lebih cepat.

Catatan

Jika perlu mengubah port untuk penelusuran kesalahan, Anda dapat melakukannya di file launchSettings.json. Lihat Pengaturan Peluncuran Kontainer.

Jendela Containers

Jika memiliki Visual Studio 2019 versi 16.4 atau yang lebih baru, Anda dapat menggunakan jendela Containers untuk melihat kontainer yang sedang berjalan di komputer Anda, serta gambar yang telah Anda sediakan.

Buka jendela Containers dengan menggunakan kotak pencarian di IDE (tekan Ctrl+Q untuk menggunakannya), ketik container, dan pilih jendela Kontainer dari daftar.

Anda dapat memasang jendela Containers di tempat yang tepat, seperti di bawah editor teks, dengan memindahkannya dan mengikuti panduan penempatan jendela.

Di jendela, temukan kontainer Anda dan lewati setiap tab untuk melihat variabel lingkungan, pemetaan port, log, dan filesystem.

Cuplikan layar jendela Kontainer.

Untuk informasi selengkapnya, lihat Menggunakan jendela Containers.

Menerbitkan gambar Docker

Setelah siklus debug dan pengembangan aplikasi selesai, Anda dapat membuat gambar produksi aplikasi.

  1. Ubah daftar dropdown konfigurasi menjadi Rilis dan buat aplikasi.

  2. Klik kanan proyek Anda di Penjelajah Solusi dan pilih Terbitkan.

  3. Pada dialog Terbitkan, pilih tab Docker Container Registry.

    Cuplikan layar dialog Terbitkan - pilih Docker Container Registry.

  4. Pilih Buat Azure Container Registry Baru.

    Cuplikan layar dialog Terbitkan - pilih Buat registri kontainer Azure baru.

  5. Isi nilai yang Anda inginkan di Buat Azure Container Registry baru.

    Pengaturan Nilai yang disarankan Deskripsi
    Prefiks DNS Nama unik secara global Nama yang mengidentifikasi registri kontainer Anda secara unik.
    Langganan Memilih langganan Anda Langganan Azure untuk digunakan.
    Grup Sumber Daya myResourceGroup Nama grup sumber daya untuk membuat registri kontainer Anda. Pilih Baru untuk membuat grup sumber daya baru.
    SKU Standard Tingkat layanan registri kontainer
    Lokasi Registri Lokasi yang dekat dengan Anda Pilih Lokasi di wilayah yang dekat dengan Anda atau di dekat layanan lain yang akan menggunakan registri kontainer Anda.

    Cuplikan layar dialog buat Azure Container Registry Visual Studio.

  6. Klik Buat. Dialog Terbitkan kini memperlihatkan registri yang dibuat.

    Cuplikan layar dialog Terbitkan memperlihatkan Azure Container Registry dibuat.

  7. Pilih Selesai untuk menyelesaikan proses penerbitan gambar kontainer Anda ke registri yang baru dibuat di Azure.

    Cuplikan layar memperlihatkan penerbitan yang berhasil.

Langkah berikutnya

Anda sekarang dapat menarik kontainer dari registri ke host apa pun yang mampu menjalankan gambar Docker, misalnya Azure Container Instances.

Dengan Visual Studio, Anda dapat dengan mudah membuat, men-debug, dan menjalankan aplikasi .NET, ASP.NET, dan ASP.NET Core dalam kontainer dan menerbitkannya ke Azure Container Registry, Docker Hub, Azure App Service, atau Container Registry Anda sendiri. Dalam artikel ini, Anda menerbitkan aplikasi ASP.NET Core ke Azure Container Registry.

Prasyarat

Penginstalan dan konfigurasi

Untuk penginstalan Docker, pertama-tama tinjau informasi di Desktop Docker untuk Windows: Apa yang perlu diketahui sebelum Anda menginstal. Berikutnya, pasang Desktop Docker.

Menambahkan proyek ke kontainer Docker

  1. Sebelum Anda membuat proyek Visual Studio, pastikan Docker Desktop menjalankan jenis kontainer (Windows atau Linux) yang ingin Anda gunakan dalam proyek Visual Studio Anda.

    Untuk mengubah jenis kontainer yang digunakan oleh Docker Desktop, klik kanan ikon Docker (paus) di Taskbar dan pilih Beralih ke kontainer Linux atau Beralih ke kontainer Windows.

    Peringatan

    Jika Anda mengalihkan jenis kontainer setelah membuat proyek Visual Studio, file gambar Docker mungkin gagal dimuat.

  2. Buat proyek baru menggunakan templat Aplikasi Web ASP.NET Core atau jika Anda ingin menggunakan .NET Framework daripada .NET Core, pilih Aplikasi Web ASP.NET (.NET Framework).

  3. Pada layar Buat aplikasi web baru, pastikan kotak centang Aktifkan Dukungan Docker dipilih.

    Cuplikan layar kotak centang Aktifkan Dukungan Docker.

    Cuplikan layar menunjukkan rilis terbaru dengan .NET 8.0. Jika Anda menggunakan .NET Framework, dialog terlihat sedikit berbeda.

  4. Pilih jenis kontainer yang Anda inginkan (Windows atau Linux) dan pilih Buat.

Gambaran umum Dockerfile

Visual Studio membuat Dockerfile di proyek Anda, yang menyediakan resep cara membuat gambar Docker akhir. Untuk informasi selengkapnya, lihat referensi Dockerfile untuk detail tentang perintah yang digunakan dalam Dockerfile.

#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
#For more information, please see https://aka.ms/containercompat

FROM mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

FROM mcr.microsoft.com/dotnet/sdk:8.0-nanoserver-1809 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["MyWepApp/MyWebApp.csproj", "MyWebApp/"]
RUN dotnet restore "./MyWebApp/./MyWebApp.csproj"
COPY . .
WORKDIR "/src/MyWebApp"
RUN dotnet build "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/build

FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyWebApp.dll"]

Dockerfile sebelumnya didasarkan pada gambar .NET 8 Microsoft Container Registry (MCR) dan menyertakan instruksi untuk memodifikasi gambar dasar dengan membangun proyek bernama MyWebApp dan menambahkannya ke kontainer. Jika Anda menggunakan .NET Framework, gambar dasarnya berbeda.

Saat kotak centang Konfigurasi untuk HTTPS dialog proyek baru dicentang, Dockerfile mengekspos dua port. Satu port digunakan untuk lalu lintas HTTP; port lainnya digunakan untuk HTTPS. Jika kotak centang tidak dicentang, satu port (80) diekspos untuk lalu lintas HTTP.

Dengan Visual Studio 2022 versi 17.7 atau yang lebih baru, Anda dapat menargetkan .NET 8. Dalam hal ini, Anda memiliki manfaat untuk dapat menjalankan aplikasi Anda dengan lebih aman, sebagai pengguna normal, daripada dengan izin yang ditingkatkan. Dockerfile default yang dihasilkan oleh Visual Studio untuk proyek .NET 8 dikonfigurasi untuk berjalan sebagai pengguna normal. Untuk mengaktifkan perilaku ini pada proyek yang ada, tambahkan baris USER app ke Dockerfile di gambar dasar. Selain itu, karena port 80 dibatasi untuk pengguna normal, ekspos port 8080 dan 8081 alih-alih 80 dan 443. Port 8080 digunakan untuk lalu lintas HTTP, dan port 8081 digunakan untuk HTTPS. Untuk berjalan sebagai pengguna normal, kontainer harus menggunakan gambar dasar .NET 8, dan aplikasi harus berjalan sebagai aplikasi .NET 8. Saat dikonfigurasi dengan benar, Dockerfile Anda harus berisi kode seperti dalam contoh berikut:

FROM mcr.microsoft.com/dotnet/aspnet:8.0-preview AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

Debug

Pilih Docker dari daftar dropdown debug di toolbar, dan mulai debugging aplikasi. Anda mungkin melihat pesan dengan permintaan untuk memercayai sertifikat; pilih percaya sertifikat untuk melanjutkan.

Opsi Alat Kontainer di jendela Output menunjukkan tindakan yang sedang dilakukan. Pertama kali, mungkin perlu beberapa saat untuk mengunduh gambar dasar, tetapi lebih cepat pada eksekusi berikutnya.

Setelah build selesai, browser akan membuka dan menampilkan beranda aplikasi Anda. Di bilah alamat browser, Anda dapat melihat localhost URL dan nomor port untuk penelusuran kesalahan.

Catatan

Jika Anda perlu mengubah port untuk penelusuran kesalahan, Anda dapat melakukannya dalam launchSettings.json file. Lihat Pengaturan Peluncuran Kontainer.

Jendela Containers

Anda dapat menggunakan jendela Kontainer untuk melihat kontainer yang sedang berjalan di komputer Anda dan gambar lain yang telah Anda sediakan.

Buka jendela Containers dengan menggunakan kotak pencarian di IDE (tekan Ctrl+Q untuk menggunakannya), ketik container, dan pilih jendela Kontainer dari daftar.

Anda dapat memasang jendela Containers di tempat yang tepat, seperti di bawah editor teks, dengan memindahkannya dan mengikuti panduan penempatan jendela.

Di jendela, temukan kontainer Anda dan lewati setiap tab untuk melihat variabel lingkungan, pemetaan port, log, dan filesystem.

Cuplikan layar jendela Kontainer.

Untuk informasi selengkapnya, lihat Menggunakan jendela Containers.

Menerbitkan gambar Docker

Setelah siklus debug dan pengembangan aplikasi selesai, Anda dapat membuat gambar produksi aplikasi.

  1. Ubah daftar dropdown konfigurasi menjadi Rilis dan buat aplikasi.

  2. Klik kanan proyek Anda di Penjelajah Solusi dan pilih Terbitkan.

  3. Pada dialog Terbitkan, pilih tab Docker Container Registry.

    Cuplikan layar dialog Terbitkan - pilih Docker Container Registry.

  4. Pilih Buat Azure Container Registry Baru.

    Cuplikan layar dialog Terbitkan - pilih Buat registri kontainer Azure baru.

  5. Isi nilai yang Anda inginkan di Buat Azure Container Registry baru.

    Pengaturan Nilai yang disarankan Deskripsi
    Prefiks DNS Nama unik secara global Nama yang mengidentifikasi registri kontainer Anda secara unik.
    Langganan Memilih langganan Anda Langganan Azure untuk digunakan.
    Grup Sumber Daya myResourceGroup Nama grup sumber daya untuk membuat registri kontainer Anda. Pilih Baru untuk membuat grup sumber daya baru.
    SKU Standard Tingkat layanan registri kontainer
    Lokasi Registri Lokasi yang dekat dengan Anda Pilih Lokasi di wilayah di dekat Anda atau di dekat layanan lain yang dapat menggunakan registri kontainer Anda.

    Cuplikan layar dialog buat Azure Container Registry Visual Studio.

  6. Pilih Buat. Dialog Terbitkan kini memperlihatkan registri yang dibuat.

    Cuplikan layar dialog Terbitkan memperlihatkan Azure Container Registry dibuat.

  7. Pilih Selesai untuk menyelesaikan proses penerbitan gambar kontainer Anda ke registri yang baru dibuat di Azure.

    Cuplikan layar memperlihatkan penerbitan yang berhasil.

Langkah berikutnya

Anda sekarang dapat menarik kontainer dari registri ke host apa pun yang mampu menjalankan gambar Docker, misalnya Azure Container Instances.

Sumber Daya Tambahan: