paint-brush
Docker Görüntüsünden Azure'da ASP.NET Core Web Uygulaması Nasıl Dağıtılırby@igorlopushko
986
986

Docker Görüntüsünden Azure'da ASP.NET Core Web Uygulaması Nasıl Dağıtılır

Igor Lopushko6m2024/01/19
Read on Terminal Reader

Bu yazımda basit bir ASP.NET Core web uygulamasının nasıl oluşturulacağı, uygulamanız ile docker imajının nasıl oluşturulacağı ve bunu Azure’a dağıtmanın en kolay yolu hakkında detaylı bir rehber vereceğim. Sonunda web uygulamanızı nasıl dağıtacağınızı ve onu tüm dünya için erişilebilir hale getireceğinizi iyi anlayacaksınız.
featured image - Docker Görüntüsünden Azure'da ASP.NET Core Web Uygulaması Nasıl Dağıtılır
Igor Lopushko HackerNoon profile picture

giriiş

Web geliştiricileri olarak, uygulamalarımızın dağıtımı ve bakımının tüm zorluklarıyla birlikte uygun barındırmayı bulurduk. Ancak artık bulut sağlayıcılarının bizim için pek çok şeyi neredeyse hiçbir ücret ödemeden yapabileceği yeni bir çağda yaşıyoruz. .NET geliştiricilerine gelince, Microsoft Azure, web uygulamalarını barındırmak için en doğal seçenek gibi görünüyor.


Docker, uygulamanızı çalıştırdığınız platform ve ortamdan soyutlama yapmanızı mümkün kılan başka bir teknoloji parçasıdır.


Bu yazımda basit bir ASP.NET Core web uygulamasının nasıl oluşturulacağı, uygulamanız ile docker imajının nasıl oluşturulacağı ve bunu Azure’a dağıtmanın en kolay yolu hakkında detaylı bir rehber vereceğim. Sonunda web uygulamanızı nasıl dağıtacağınızı ve onu tüm dünya için erişilebilir hale getireceğinizi iyi anlayacaksınız.

1. ASP.NET Core Web Uygulaması Oluşturun

Bu makaledeki geliştirme amacıyla JetBrains Rider'ı kullanacağım. Ancak istediğiniz herhangi bir aracı kullanabilirsiniz.


Öncelikle yeni bir proje oluşturmanız gerekiyor. Buna basit ' webapp ' diyelim.

Yeni çözüm oluştur


Yeni bir proje oluşturduktan sonra şöyle görünmelidir:

Proje yapısı


2. Docker Görüntüsü Oluşturun

Projede herhangi bir değişiklik yapmadan Dockerfile odaklanacağız. Aşağıdaki örnek gibi değiştirin:

 FROM mcr.microsoft.com/dotnet/aspnet:6.0 as base WORKDIR /app EXPOSE 8080 ENV ASPNETCORE_URLS http://+:8080 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build COPY . /src WORKDIR /src RUN dotnet build "webapp.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "webapp.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "webapp.dll"]


Docker konteynerine HTTP üzerinden bağlanabilmek için EXPOSE 8080 ve ENV ASPNETCORE_URLS http://+:8080 satırlarına dikkat etmeniz gerekmektedir.


Komut satırından bir liman işçisi görüntüsü oluşturun. webapp proje dizinine gitmeniz ve aşağıdaki komutu uygulamanız gerekir:

 DOCKER_BUILDKIT=1 docker buildx build --platform linux/amd64 --tag drmoz/webapp:latest .


Bunu Mac M1'de çalıştırıyorum ve Azure dağıtımıyla uyumlu olması için --platform parametresini açıkça belirtmem gerekiyor. Ayrıca başka bir mimari için görüntü oluşturabilmek için DOCKER_BUILDKIT=1 parametresini belirterek ve buildx kullanarak Docker Buildkit'i etkinleştirmem gerekiyor.


Intel x86/x64 platformunda çalıştırıyorsanız --platform parametresini belirtmenize ve buildx etkinleştirmenize gerek kalmadan docker build komutunu kullanabilirsiniz.


Görselinizi farklı şekilde etiketleyebilirsiniz ancak Docker Hub kullanacağım için drmoz/webapp:latest görsel etiketinin bir parçası olarak hesap adımı: drmoz belirtmem gerekiyor.


Bir görüntü oluşturulduğunda, aşağıdaki komutu çalıştırarak Docker'da mevcut olup olmadığını kontrol edebilirsiniz:

 docker images


Listede olmalı:

 REPOSITORY TAG IMAGE ID CREATED SIZE drmoz/webapp latest 0cfac748256b 37 minutes ago 216MB


Yeni oluşturulan görüntünün düzgün çalıştığını doğrulamak için docker konteynerini çalıştıralım. Bir kapsayıcıyı başlatmak için docker run komutunu yürütün:

 docker run -p 5555:8080 drmoz/webapp:latest


Kapsayıcının içindeki 8080 bağlantı noktasını yerel makinenizin 5555 bağlantı noktasına eşlemek için -p parametresini belirtin. Ayrıca kapsayıcıyı oluşturmak için görüntü adını da belirtin. Benim durumumda bu drmoz/webapp:latest .


Artık ASP.NET Core Web App ana sayfasını görmek için tarayıcınızda http://localhost:5555 gezinebilirsiniz.

ASP.NET Core Web Uygulaması: Ana sayfa



Docker Hub'a bir imaj göndermemiz gerekiyor. Bundan önce Docker Registry'ye kaydolmalı ve bir depo oluşturmalısınız. Ana sayfanın sağ köşesindeki ' Depo oluştur ' butonuna tıklayın.

Docker Hub'ın yeni deposu


Repository Name alanını belirtin ve depo görünürlüğünü Public koruyun.


Komut satırında Docker Hub kayıt defterinde oturum açmanız gerekir:

 docker login


Bundan sonra, yeni oluşturulan bir görüntüyü kayıt defterine gönderebileceksiniz:

 docker push drmoz/webapp:latest


Depoya gidin; resimle ilgili bilgileri göreceksiniz:

Docker Hub deposu


3. Azure'da bir Web Uygulaması oluşturun

Artık ASP.NET Core Web Uygulamamızı Azure’a dağıtmaya hazırız. Azure Portal'da oturum açalım ve yeni bir kaynak grubu oluşturalım. Kaynak Grubu adını ' webapp-rg ' olarak belirtin ve 'İncele + oluştur' düğmesini tıklayın.


Kaynak Grubu Oluştur: Temel sekmesi


Bir sonraki ekranda 'Oluştur' düğmesine basmanız yeterlidir.

Kaynak Grubu Oluştur: Gözden Geçir + oluştur sekmesi


Artık bir Web Uygulaması oluşturabiliriz. 'Kaynak oluştur' sayfasına gidin ve WebApp'i bulun. 'Oluştur' düğmesini tıklayın.

Web Uygulaması Oluştur: Temel sekmesi

Daha önce oluşturduğumuz Resource Group belirtmeniz gerekiyor. Ayrıca Web Uygulaması için benzersiz bir Name belirtin. Publish alanında 'Docker Container'ı seçin. Daha sonra hangi Docker imajının kullanılacağını belirtebileceğiz.


Pricing plans bölümünde uygun seçeneklerden herhangi birini seçin, ancak test amacıyla Ücretsiz F1 lastiği kullanmanızı öneririm. Docker sekmesine gidin.


Web Uygulaması Oluştur: Docker sekmesi


Bu sekmede Image Source alanında 'Docker Hub'ı seçin. Access Type alanında 'Public' seçeneğini seçin ve Docker Hub'a aktardığımız görüntünün adını içeren Image and tag değerini belirtin. 'İncele + oluştur' sekmesine gidin. Bu sekmede 'Oluştur' düğmesini tıklayın:

Web Uygulaması Oluştur: Gözden Geçir + oluştur sekmesi


Yeni kaynak dağıtıldığında size bu kaynağa gitmek isteyip istemediğiniz sorulacaktır; sadece yap. Web Uygulamasına ilişkin bilgileri görebileceksiniz.

Web Uygulaması kaynak bilgileri


Dağıtılmış bir web uygulamasını açmak için 'Gözat' düğmesine tıklayın. Her şey doğru giderse, http://localhost:5555 adresine giderek tarayıcınızda gördüğünüze benzer ASP.NET Core Web App ana sayfasını görmelisiniz.

Sürekli Dağıtımı Etkinleştir

'Dağıtım Merkezi' ayarlarına giderseniz ve 'Dağıtım devam ediyor'u etkinleştirirseniz, Docker Hub'a her yeni bir görüntü gönderdiğinizde görüntünüzü yeniden dağıtabilirsiniz. Bu sayede kodunuzda değişiklik yapabilir, onu yeni bir imajla Docker Hub’a gönderebilir ve değişiklikleri dakikalar içinde Azure’da görebilirsiniz.

Web Uygulaması - Dağıtım Merkezi

Azure Web Uygulamasında Sorun Giderme

Dağıtım günlüklerini görebilmek ve sorunları tanımlayabilmek için 'Uygulama Hizmeti günlükleri' bölümü altında günlüklerin dosya sistemine kaydedilmesini aşağıdaki şekilde etkinleştirmeniz gerekir:

Web Uygulaması - Uygulama Hizmeti günlükleri


İşlem tamamlandığında 'Dağıtım Merkezi'ne gidebilir ve günlükleri aşağıdaki gibi görebilirsiniz:

Web Uygulaması - Dağıtım Merkezi


Özet

Bu noktaya ulaştıysanız ASP.NET Core web uygulaması oluşturmayı başardınız demektir; bunu Docker görüntüsüne paketleyin ve Azure'a dağıtın. Günümüzde teknoloji hayatı kolaylaştırmakta ve gelişim sürecini hızlandırmaktadır. Uygulamanızı bulut sağlayıcıya ne kadar kolay dağıtıp tüm dünyaya sunabileceğinizi görebilir, bazı testler gerçekleştirebilir ve çalışmanızın sonucunu görebilirsiniz.


Artık Microsoft belgelerini kullanarak Azure bulut sağlayıcılarının ayrıntılarına inebilirsiniz. Ayrıca bu teknolojiyi daha iyi anlamak için Docker belgelerine bakın. Umarım faydalı olabilir.