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
- Docker Desktop
- Visual Studio 2019 dengan Pengembangan Web, beban kerja Azure Tools, dan/atau pengembangan lintas platform .NET Core beban kerja yang diinstal
- .NET Core Development Tools untuk pengembangan dengan .NET Core
- Untuk menerbitkan ke Azure Container Registry, diperlukan langganan Azure. Mendaftar untuk uji coba gratis.
Penginstalan dan penyiapan
Untuk penginstalan Docker, pertama-tama tinjau informasi di Docker Desktop untuk Windows: Apa yang harus diketahui sebelum Anda menginstal. Selanjutnya, instal Docker Desktop.
Menambahkan proyek ke kontainer Docker
Buat proyek baru menggunakan templat ASP.NET Core Web App atau jika Anda ingin menggunakan .NET Framework alih-alih .NET Core, pilih ASP.NET Web Application (.NET Framework).
Pada layar Buat aplikasi web baru, pastikan kotak centang Aktifkan Dukungan Docker dipilih.
Cuplikan layar menunjukkan .NET Core; jika Anda menggunakan .NET Framework, itu terlihat sedikit berbeda.
Pilih jenis kontainer yang Anda inginkan (Windows atau Linux) dan klik Buat.
Gambaran umum Dockerfile
Dockerfile, resep untuk membuat gambar Docker akhir, dibuat dalam proyek. Lihat Dockerfile referensi untuk pemahaman terkait perintah yang terdapat 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 berbasis pada citra dotnet/core/aspnet, serta mencakup instruksi untuk memodifikasi citra dasar dengan membangun proyek Anda dan menambahkannya ke dalam kontainer. Jika Anda menggunakan .NET Framework, gambar dasar akan berbeda.
Saat kotak centang Konfigurasi untuk HTTPS dalam dialog proyek baru dicentang, Dockerfile membuka dua port. Satu port digunakan untuk lalu lintas HTTP; port lain digunakan untuk HTTPS. Jika kotak centang tidak dicentang, satu port (80) diekspos untuk lalu lintas HTTP.
Awakutu
Pilih Docker dari daftar dropdown debug di toolbar, dan mulai debugging aplikasi. Anda mungkin melihat pesan dengan perintah tentang memercayai sertifikat; pilih untuk mempercayai sertifikat untuk melanjutkan.
Opsi Kontainer Alat di jendela Output menampilkan tindakan yang sedang berlangsung. Pertama kali, mungkin perlu beberapa saat untuk mengunduh gambar dasar, tetapi jauh lebih cepat pada eksekusi berikutnya.
Nota
Jika Anda perlu mengubah port untuk penelusuran kesalahan, Anda dapat melakukannya dalam file launchSettings.json. Lihat Pengaturan Peluncuran Kontainer .
Jendela kontener
Jika Anda memiliki Visual Studio 2019 versi 16.4 atau yang lebih baru, Anda dapat menggunakan jendela Kontainer untuk melihat kontainer yang sedang berjalan di komputer Anda, serta gambar yang tersedia.
Buka jendela Kontainer dengan menggunakan kotak pencarian di IDE (tekan Ctrl+Q untuk menggunakannya), ketik container
, dan pilih jendela Kontainer dari daftar.
Anda dapat memasang jendela Kontainer di tempat yang nyaman, seperti di bawah editor, dengan memindahkannya dan mengikuti panduan penempatan jendela.
Di jendela, temukan kontainer Anda dan lewati setiap tab untuk melihat variabel lingkungan, pemetaan port, log, dan sistem file.
Untuk informasi selengkapnya, lihat Menggunakan jendela Kontainer.
Menerbitkan gambar Docker
Setelah siklus pengembangan dan debug aplikasi selesai, Anda dapat membuat gambar produksi aplikasi.
Ubah daftar dropdown konfigurasi menjadi Rilis dan bangun aplikasi.
Klik kanan proyek Anda di Solution Explorer dan pilih Terbitkan.
Pada dialog Terbitkan, pilih tab Docker Container Registry.
Pilih Buat Azure Container Registry baru.
Isi nilai yang Anda inginkan di Buat Azure Container Registry baru.
Pengaturan Nilai yang disarankan Deskripsi Awalan DNS Nama unik global Nama yang secara unik mengidentifikasi registri kontainer Anda. Langganan Pilih langganan Anda Langganan Azure yang akan digunakan. Grup Sumber Daya KelompokSumberDayaSaya Nama grup sumber daya untuk membuat registri kontainer Anda. Pilih Baru untuk membuat grup sumber daya baru. SKU Standar Tingkat layanan registri kontainer Lokasi Registri Lokasi yang dekat dengan Anda Pilih Lokasi di wilayah di dekat Anda atau di dekat layanan lain yang akan menggunakan registri kontainer Anda. Klik Buat. Dialog Terbitkan sekarang memperlihatkan registri yang dibuat.
Pilih Selesai untuk menyelesaikan proses penerbitan gambar kontainer Anda ke registri yang baru dibuat di Azure.
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
- Docker Desktop
- Visual Studio 2022 dengan beban kerja Pengembangan Web, beban kerja Azure Tools, dan/atau beban kerja pengembangan desktop .NET yang diinstal
- Untuk menerbitkan ke Azure Container Registry, diperlukan langganan Azure. Mendaftar untuk uji coba gratis.
Penginstalan dan penyiapan
Untuk penginstalan Docker, pertama-tama tinjau informasi di Docker Desktop untuk Windows: Apa yang harus diketahui sebelum Anda menginstal. Selanjutnya, instal Docker Desktop.
Menambahkan proyek ke kontainer Docker
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.
Buat proyek baru menggunakan templat ASP.NET Core Web App atau jika Anda ingin menggunakan .NET Framework alih-alih .NET Core, pilih ASP.NET Web Application (.NET Framework).
Pada layar Buat aplikasi web baru, pastikan kotak centang Aktifkan Dukungan Docker dipilih.
Cuplikan layar menunjukkan rilis terbaru dengan .NET 8.0. Jika Anda menggunakan .NET Framework, dialog terlihat sedikit berbeda.
Pilih jenis kontainer yang Anda inginkan (Windows atau Linux) dan pilih Buat.
Gambaran umum Dockerfile
Visual Studio membuat Dockerfile dalam proyek Anda, yang menyediakan resep cara membuat image Docker akhir. Untuk informasi selengkapnya, lihat Referensi Dockerfile untuk detail mengenai perintah yang digunakan di 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.
# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
# This stage is used to build the service project
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
# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyWebApp.dll"]
Dockerfile sebelumnya didasarkan pada gambar Microsoft Container Registry (MCR) .NET 8 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 Konfigurasikan dialog proyek baru untuk HTTPS dicentang, Dockerfile mengekspos dua port. Satu port digunakan untuk lalu lintas HTTP; port lain 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 perintah tentang memercayai sertifikat; pilih untuk mempercayai sertifikat untuk melanjutkan.
Opsi Alat Kontainer di jendela Output menunjukkan tindakan apa yang terjadi. 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 URL localhost
dan nomor port untuk debugging.
Nota
Jika Anda perlu mengubah port untuk penelusuran kesalahan, Anda dapat melakukannya dalam file launchSettings.json
. Lihat Pengaturan Peluncuran Kontainer .
Jendela kontainer
Anda dapat menggunakan jendela Kontainer untuk melihat kontainer yang berjalan di komputer Anda dan citra lain yang tersedia.
Buka jendela Kontainer dengan menggunakan kotak pencarian di IDE (tekan Ctrl+Q untuk menggunakannya), ketik container
, dan pilih jendela Kontainer dari daftar.
Anda dapat memasang jendela Kontainer di tempat yang nyaman, seperti di bawah editor, dengan cara memindahkannya dan berpedoman pada panduan penempatan jendela.
Di jendela, temukan kontainer Anda dan lewati setiap tab untuk melihat variabel lingkungan, pemetaan port, log, dan sistem file.
Untuk informasi selengkapnya, silakan lihat Menggunakan Jendela Kontainer.
Menerbitkan gambar Docker
Setelah siklus pengembangan dan debug aplikasi selesai, Anda dapat membuat gambar produksi aplikasi.
Ubah daftar dropdown konfigurasi menjadi Release dan bangun aplikasinya.
Klik kanan proyek Anda di Solution Explorer dan pilih Terbitkan.
Pada dialog Terbitkan, pilih tab Docker Container Registry.
Pilih Buat Azure Container Registry baru.
Isi nilai yang Anda inginkan di Buat Azure Container Registry baru.
Pengaturan Nilai yang disarankan Deskripsi Awalan DNS Nama unik global Nama yang secara unik mengidentifikasi registri kontainer Anda. Langganan Pilih langganan Anda Langganan Azure yang akan digunakan. Grup Sumber Daya myResourceGroup Nama grup sumber daya untuk membuat registri kontainer Anda. Pilih Baru untuk membuat grup sumber daya baru. SKU Standar 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. Pilih Buat. Kotak dialog Publish sekarang menampilkan registri yang dibuat.
Pilih Selesai untuk menyelesaikan proses penerbitan gambar kontainer Anda ke registri yang baru dibuat di Azure.
Langkah berikutnya
Anda sekarang dapat menarik kontainer dari registri ke host apa pun yang mampu menjalankan gambar Docker, misalnya Azure Container Instances.