Home TürkçeAsp.Net ASP.Net Core Uygulaması için Docker İmajı Hazırlamak – Production

ASP.Net Core Uygulaması için Docker İmajı Hazırlamak – Production

by Fatih Boy
0 comment

Bir önceki makalemizde her ne kadar geliştirdiğimiz Asp.Net uygulaması için Docker imajı hazırlamış olsak da, hatırlarsanız imaj dosyamız içerisinde kaynak kodlarımızda yer alıyordu. Container’ımız ilk başladığında kaynak kodlar derlenerek çıktısı çalıştırılıyordu. Gerçek hayat senaryolarında isterler biraz farklı olabilir, en azında üretim ortamınıza kaynak kodlarınızın bulunduğu bir imaj atmak istemeyeceğinizi düşünüyorum. Bu sebeple, bu makalemde önceki örneğimizden devam ederek içerisinde sadece derlenmiş dosyalarımızın olduğu bir Docker imajı oluşturacağız.

Öncelikle bir önceki makalede oluşturduğumuz proje dizinimize giderek aşağıdaki komut yardımıyla projemizi publish edelim;

dotnet publish

Bu komut projemizi derleyerek çıktılarını bin/Debug/netcoreapp1.0/publish klasörü altına atacaktır.

Bir sonraki adımda daha öncede otomatik olarak oluşturulmuş olan Dockerfile dosyasını düzenlememiz gerekiyor;

FROM microsoft/dotnet:latest
COPY bin/Debug/netcoreapp1.0/publish/ /app/
WORKDIR /app
EXPOSE 5000/tcp
ENTRYPOINT ["dotnet", "EnterprisecodingDockerApp.dll"]

Bir önceki versiyonundan farklı olarak bu defa sadece publish klasörü altındaki dosyaların Docker imajına kopyalanmasını istiyoruz. Container başlatıldığında ise standart dotnet run komutu yerine doğrudan app klasörü altındaki EnterprisecodingDockerApp.dll dosyasının başlatılmasını istiyoruz. Sizin projeniz için dll adı farklı olabilir, buraya kendi projenizin çıktı dll’ini yazmanız önemli.

Ardından, proje dizininde çalıştıracağımız aşağıdaki komut yardımıyla güncellenmiş haliyle Docker imaj dosyamızı oluşturalım;

docker build -t enterprisecoding-docker-app .

Son olarak da aşağıdaki komut ile docker container’ımızı başlatabiliriz;

docker run -it -p 5000:5000 enterprisecoding-docker-app

docker run komutu ile Docker container'ını başlatabilirsiniz

Şimdi… Buraya kadar işin kolay kısmıydı. Önceki makalemi okuduysanız, zaten basit bir akıl yürütme ile bu adımları sizde bulabilirdiniz. Asıl püf noktası ise bundan sonrasında…

Yukarıdaki komut çıktısında http://localhost:5000  adresinin dinlendiği belirtiliyor; fakat kendi bilgisayarınızdan bu adresi açtığınızda daha önceden ulaşabildiğiniz uygulamaya ulaşamadığınızı göreceksiniz.

Bunun nedeni, mesaja dikkat edecek olursanız, uygulamanın varsayılan olarak sadece localhost’tan gelen talepleri dinlemesi. Bir önceki makalede yer alan Dockerfile içerisindeki Entrypoint değerini hatırlayın. Teknik olarak, bir container içerisinden çalışan uygulamamız için bilgisayarımız uzak bir makine, dolayısıyla localhost ile ulaşamamız normal…

Problemin çok basit bir çözümü var aslında, yapılması gereken uygulamamıza gelen tüm talepleri yanıtlaması gerektiğini söylemek. Bunun için Dockerfile dosyasında aşağıdaki satırı bulun;

EXPOSE 5000

ve bu satırın hemen üzerine aşağıdaki şekilde bir girdi ekleyin;

ENV ASPNETCORE_URLS http://*:5000

Dockerfile dosyasını bu şekilde güncelledikten sonra daha önceden takip ettiğimiz adımlarla docker imajını oluşturup başlatacak olursanız bu defa uygulamayı kendi bilgisayarınızdan açabildiğinizi göreceksiniz.

Container'ımızın durumunu Kitematic içerisinden de takip edebilirsiniz

Şu Yazıları da Sevebilirsiniz

Leave a Comment

* Bu formu kullanarak, verilerinizin bu web sitesi tarafından saklanması ve kullanılmasını kabul ediyorsunuz.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bunu kabul ettiğinizi varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul Et Daha Fazla Bilgi