Bagikan melalui


Memigrasikan Aplikasi MVC ASP.NET ke Kontainer Windows

Menjalankan aplikasi berbasis .NET Framework yang ada di kontainer Windows tidak memerlukan perubahan apa pun pada aplikasi Anda. Untuk menjalankan aplikasi di kontainer Windows, Anda membuat gambar Docker yang berisi aplikasi dan memulai kontainer. Topik ini menjelaskan cara mengambil aplikasi MVC ASP.NET yang ada dan menyebarkannya dalam kontainer Windows.

Anda mulai dengan aplikasi MVC ASP.NET yang sudah ada, lalu membuat aset yang diterbitkan menggunakan Visual Studio. Anda menggunakan Docker untuk membuat gambar yang berisi dan menjalankan aplikasi Anda. Anda akan menelusuri situs yang berjalan dalam kontainer Windows dan memverifikasi bahwa aplikasi berfungsi.

Artikel ini mengasumsikan pemahaman dasar tentang Docker. Anda dapat mempelajari tentang Docker dengan membaca Gambaran umum Docker.

Aplikasi yang akan Anda jalankan dalam kontainer adalah situs web sederhana yang menjawab pertanyaan secara acak. Aplikasi ini adalah aplikasi MVC dasar tanpa autentikasi atau penyimpanan database; ini memungkinkan Anda fokus pada pemindahan tingkat web ke kontainer. Topik di masa mendatang akan menunjukkan cara memindahkan dan mengelola penyimpanan persisten dalam aplikasi kontainer.

Memindahkan aplikasi Anda melibatkan langkah-langkah berikut:

  1. Membuat tugas penerbitan untuk membangun aset untuk gambar.
  2. Membangun gambar Docker yang akan menjalankan aplikasi Anda.
  3. Memulai kontainer Docker yang menjalankan gambar Anda.
  4. Memverifikasi aplikasi menggunakan browser Anda.

Aplikasi yang sudah selesai ada di GitHub.

Prasyarat

Mesin pengembangan harus memiliki perangkat lunak berikut:

Penting

Jika Anda menggunakan Windows Server 2016, ikuti instruksi untuk Penyebaran Host Kontainer - Windows Server.

Setelah menginstal dan memulai Docker, klik kanan pada ikon baki dan pilih Beralih ke kontainer Windows. Ini diperlukan untuk menjalankan gambar Docker berdasarkan Windows. Perintah ini membutuhkan waktu beberapa detik untuk dijalankan:

Kontainer Windows

Menerbitkan skrip

Kumpulkan semua aset yang perlu Anda muat ke dalam gambar Docker di satu tempat. Anda dapat menggunakan perintah Visual Studio Publish untuk membuat profil publikasi untuk aplikasi Anda. Profil ini akan menempatkan semua aset dalam satu pohon direktori yang Anda salin ke gambar target Anda nanti dalam tutorial ini.

Langkah-langkah Penerbitan

  1. Klik kanan pada proyek web di Visual Studio, dan pilih Terbitkan.
  2. Klik tombol Profil kustom, lalu pilih Sistem File sebagai metode .
  3. Pilih direktori. Menurut konvensi, sampel yang diunduh menggunakan bin\Release\PublishOutput.

Terbitkan

Buka bagian Opsi Penerbitan File dari tab Pengaturan . Pilih Prakompilasi selama penerbitan. Pengoptimalan ini berarti Anda akan mengkompilasi tampilan dalam kontainer Docker, Anda menyalin tampilan yang telah dikompilasi sebelumnya.

Terbitkan Pengaturan

Klik Terbitkan, dan Visual Studio akan menyalin semua aset yang diperlukan ke folder tujuan.

Membuat gambar

Buat file baru bernama Dockerfile untuk menentukan gambar Docker Anda. Dockerfile berisi instruksi untuk membangun gambar akhir dan menyertakan nama gambar dasar, komponen yang diperlukan, aplikasi yang ingin Anda jalankan, dan gambar konfigurasi lainnya. Dockerfile adalah input ke docker build perintah yang membuat gambar.

Untuk latihan ini, Anda akan membangun gambar berdasarkan gambar yang microsoft/aspnet terletak di Docker Hub. Gambar dasar, microsoft/aspnet, adalah gambar Windows Server. Ini berisi Windows Server Core, IIS, dan ASP.NET 4.7.2. Ketika Anda menjalankan gambar ini dalam kontainer Anda, gambar ini akan secara otomatis memulai IIS dan situs web yang diinstal.

Dockerfile yang membuat gambar Anda terlihat seperti ini:

# The `FROM` instruction specifies the base image. You are
# extending the `microsoft/aspnet` image.

FROM microsoft/aspnet

# The final instruction copies the site you published earlier into the container.
COPY ./bin/Release/PublishOutput/ /inetpub/wwwroot

Tidak ada ENTRYPOINT perintah dalam Dockerfile ini. Anda tidak membutuhkannya. Saat menjalankan Windows Server dengan IIS, proses IIS adalah titik masuk, yang dikonfigurasi untuk dimulai dalam gambar dasar aspnet.

Jalankan perintah build Docker untuk membuat gambar yang menjalankan aplikasi ASP.NET Anda. Untuk melakukan ini, buka jendela PowerShell di direktori proyek Anda dan ketik perintah berikut di direktori solusi:

docker build -t mvcrandomanswers .

Perintah ini akan membangun gambar baru menggunakan instruksi di Dockerfile Anda, penamaan (-t penandaan) gambar sebagai mvcrandomanswers. Ini mungkin termasuk menarik gambar dasar dari Docker Hub, lalu menambahkan aplikasi Anda ke gambar tersebut.

Setelah perintah selesai, Anda dapat menjalankan docker images perintah untuk melihat informasi tentang gambar baru:

REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
mvcrandomanswers              latest              86838648aab6        2 minutes ago       10.1 GB

ID GAMBAR akan berbeda di komputer Anda. Sekarang, mari kita jalankan aplikasi.

Memulai kontainer

Mulai kontainer dengan menjalankan perintah berikut docker run :

docker run -d --name randomanswers mvcrandomanswers

Argumen -d memberi tahu Docker untuk memulai gambar dalam mode dilepas. Itu berarti gambar Docker berjalan terputus dari shell saat ini.

Dalam banyak contoh docker, Anda mungkin melihat -p untuk memetakan port kontainer dan host. Gambar aspnet default telah mengonfigurasi kontainer untuk mendengarkan di port 80 dan mengeksposnya.

--name randomanswers memberikan nama ke kontainer yang sedang berjalan. Anda dapat menggunakan nama ini alih-alih ID kontainer di sebagian besar perintah.

mvcrandomanswers adalah nama gambar yang akan dimulai.

Memverifikasi di browser

Setelah kontainer dimulai, sambungkan ke kontainer yang sedang berjalan menggunakan http://localhost dalam contoh yang ditampilkan. Ketik URL tersebut ke browser Anda, dan Anda akan melihat situs yang sedang berjalan.

Catatan

Beberapa VPN atau perangkat lunak proksi mungkin mencegah Anda menavigasi ke situs Anda. Anda dapat menonaktifkannya untuk sementara waktu untuk memastikan kontainer Anda berfungsi.

Direktori sampel di GitHub berisi skrip PowerShell yang menjalankan perintah ini untuk Anda. Buka jendela PowerShell, ubah direktori ke direktori solusi Anda, dan ketik:

./run.ps1

Perintah di atas membangun gambar, menampilkan daftar gambar di komputer Anda, dan memulai kontainer.

Untuk menghentikan kontainer Anda, terbitkan docker stop perintah:

docker stop randomanswers

Untuk menghapus kontainer, terbitkan docker rm perintah:

docker rm randomanswers