ASP.NET MVC Uygulamalarını Windows Kapsayıcılarına Geçirme

Bir Windows kapsayıcısında mevcut .NET Framework tabanlı bir uygulamayı çalıştırmak için uygulamanızda herhangi bir değişiklik yapılması gerekmez. Uygulamanızı bir Windows kapsayıcısında çalıştırmak için uygulamanızı içeren bir Docker görüntüsü oluşturun ve kapsayıcıyı başlatın. Bu konu başlığı altında, var olan bir ASP.NET MVC uygulamasının nasıl yapılacağı ve bir Windows kapsayıcısında nasıl dağıtılacağı açıklanmaktadır.

Mevcut bir ASP.NET MVC uygulamasıyla başlayın ve ardından Visual Studio 'Yu kullanarak yayımlanmış varlıkları derleyin. Uygulamanızı içeren ve çalıştıran görüntüyü oluşturmak için Docker 'ı kullanırsınız. Bir Windows kapsayıcısında çalışan siteye gözatıp uygulamanın çalıştığını doğrularsınız.

Bu makale Docker hakkında temel bir anlayışınızın olduğunu varsayar. Docker’a Genel Bakış makalesini okuyarak Docker hakkında bilgi edinebilirsiniz.

Bir kapsayıcıda çalıştıracağınız uygulama, soruları rastgele cevapladığı basit bir Web sitesidir. Bu uygulama, kimlik doğrulaması veya veritabanı depolaması olmayan temel bir MVC uygulamasıdır; Web katmanını bir kapsayıcıya taşımaya odaklanmanızı sağlar. Sonraki konularda, Kapsayıcılı uygulamalarda kalıcı depolamayı nasıl taşıyacağınız ve yöneteceğiniz gösterilmektedir.

Uygulamanızı taşımak şu adımları içerir:

  1. Bir görüntü için varlıklar oluşturmak üzere bir Yayımla görevi oluşturma.
  2. Uygulamanızı çalıştıracak bir Docker görüntüsü oluşturma.
  3. Görüntünüzü çalıştıran bir Docker kapsayıcısı başlatılıyor.
  4. Tarayıcınız kullanılarak uygulama doğrulanıyor.

Tamamlanmış uygulama GitHub üzerinde.

Önkoşullar

Geliştirme makinesi aşağıdaki yazılıma sahip olmalıdır:

Important

Windows Server 2016 kullanıyorsanız kapsayıcı ana bilgisayar dağıtımı-Windows Serveryönergelerini izleyin.

Docker’ı yükleyip başlattıktan sonra tepsi simgesine sağ tıklayıp Windows kapsayıcılarına geç öğesini seçin. Bu işlem, Windows temelinde Docker görüntülerini çalıştırmak için gereklidir. Bu komutun yürütülmesi birkaç saniye sürer:

Windows kapsayıcısı

Betiği Yayımla

Bir Docker görüntüsüne yüklemeniz gereken tüm varlıkları tek bir yerde toplayın. Uygulamanız için bir yayımlama profili oluşturmak üzere Visual Studio Publish komutunu kullanabilirsiniz. Bu profil, bu öğreticide daha sonra hedef yansımanıza kopyaladığınız bir dizin ağacındaki tüm varlıkları yerleştirir.

Adımları Yayımla

  1. Visual Studio 'da web projesine sağ tıklayın ve Yayımla' yı seçin.
  2. Özel profil düğmesine tıklayın ve ardından Yöntem olarak dosya sistemi ' ni seçin.
  3. Dizini seçin. Kurala göre, indirilen örnek kullanır bin\Release\PublishOutput .

Bağlantıyı Yayımla

Ayarlar sekmesinin dosya yayımlama seçenekleri bölümünü açın. Yayınlama sırasında ön derleme' yi seçin. Bu iyileştirme, Docker kapsayıcısında görünümleri derlediğiniz, önceden derlenmiş görünümleri kopyaladığınızı gösterir.

Yayımlama ayarları

Yayımla' ya tıklayın ve Visual Studio gerekli tüm varlıkları hedef klasöre kopyalayacaktır.

Görüntü oluşturma

Docker görüntünüzü tanımlamak için dockerfile adlı yeni bir dosya oluşturun. Dockerfile , son görüntüyü oluşturmak için yönergeler içerir ve tüm temel görüntü adlarını, gerekli bileşenleri, çalıştırmak istediğiniz uygulamayı ve diğer yapılandırma görüntülerini içerir. Dockerfile , docker build görüntüyü oluşturan komutun giriştir.

Bu alıştırmada, microsoft/aspnet Docker Hub 'ındabulunan görüntüye göre bir görüntü oluşturacaksınız. Temel görüntü, microsoft/aspnet bir Windows Server görüntüsüdür. Windows Server Core, IIS ve ASP.NET 4.7.2 içerir. Bu görüntüyü kapsayıcıda çalıştırdığınızda, IIS ve yüklenen Web sitelerini otomatik olarak başlatır.

Görüntünüzü oluşturan Dockerfile şöyle görünür:

# 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

Bu Dockerfile içinde bir ENTRYPOINT komutu yoktur. Gerekli değildir. IIS ile Windows Server çalıştırırken IIS işlemi, ASPNET temel görüntüsünde başlamak üzere yapılandırılmış giriş noktası olur.

ASP.NET uygulamanızı çalıştıran görüntüyü oluşturmak için Docker Build komutunu çalıştırın. Bunu yapmak için, projenizin dizininde bir PowerShell penceresi açın ve çözüm dizinine aşağıdaki komutu yazın:

docker build -t mvcrandomanswers .

Bu komut, Dockerfile içindeki yönergeleri kullanarak yeni görüntüyü oluşturur ve bu görüntüyü mvcrandomanlar olarak adlandırırın. Bu, temel görüntünün Docker Hub 'ındançekilerek uygulamanızı bu görüntüye ekleyerek içerebilir.

Komut tamamlandıktan sonra, docker images yeni görüntüyle ilgili bilgileri görmek için komutunu çalıştırabilirsiniz:

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

GÖRÜNTÜ KIMLIĞI makinenizde farklı olacak. Şimdi uygulamayı çalıştıralım.

Bir kapsayıcı başlatma

Aşağıdaki komutu yürüterek bir kapsayıcı başlatın docker run :

docker run -d --name randomanswers mvcrandomanswers

-dBağımsız değişkeni, Docker 'ın görüntüyü ayrılmış modda başlatmasını söyler. Bu, Docker görüntüsünün geçerli kabuktan kesilen şekilde çalıştığı anlamına gelir.

Birçok Docker örneğinde, kapsayıcıyı ve ana bilgisayar bağlantı noktalarını eşlemek için-p görebilirsiniz. Varsayılan ASPNET görüntüsü, kapsayıcıyı 80 numaralı bağlantı noktasında dinlemek üzere zaten yapılandırdı ve kullanıma sunar.

, --name randomanswers Çalışan kapsayıcıya bir ad verir. Çoğu komut içinde kapsayıcı KIMLIĞI yerine bu adı kullanabilirsiniz.

, mvcrandomanswers Başlatılacak görüntünün adıdır.

Tarayıcıda doğrula

Kapsayıcı başladıktan sonra, gösterilen örnekte kullanarak çalışan kapsayıcıya bağlanın http://localhost . URL 'YI tarayıcınıza yazın ve çalışan siteyi görmeniz gerekir.

Note

Bazı VPN veya proxy yazılımları sitenizde geziniyor olabilir. Kapsayıcının çalıştığından emin olmak için bunu geçici olarak devre dışı bırakabilirsiniz.

GitHub 'daki örnek dizin, sizin için bu komutları yürüten bir PowerShell betiği içerir. Bir PowerShell penceresi açın, dizini çözüm dizininiz olarak değiştirin ve şunu yazın:

./run.ps1

Yukarıdaki komut görüntüyü oluşturur, makinenizde görüntülerin listesini görüntüler ve bir kapsayıcı başlatır.

Kapsayıcınızı durdurmak için bir komut verin docker stop :

docker stop randomanswers

Kapsayıcıyı kaldırmak için bir docker rm komut verin:

docker rm randomanswers