Fatih'in NotlarıASP.Net Core Uygulaması için Docker İmajı Hazırlamak - Fatih'in Notları
Önceki makalelerle birlikte Docker konseptlerine ve kullanımına aşina olduğunuzu umuyorum. Bu makalemde konuyu bir adım öteye götürerek geliştirdiğimiz bir ASP.Net Core uygulamasını nasıl bir Docker imajına dönüştürebileceğimizi ve bir Container içerisinde Docker’da nasıl çalıştırabileceğimizi anlatacağım.
Sürecin tüm adımlarını görebilmeniz için makalemde sıfırdan başlayacağım. Geliştirme ortamı olarak pek çok .Net geliştiricisinin alışkın olduğu Windows ve Visual Studio’dan da biraz uzaklaşalım. Her ne kadar ilerleyen makalelerde bunları kullanacak olsam da, şimdilik Mac OS ortamında çalışacağım. Bu ortamdaki en önemli yardımcılarım Visual Studio Code ve bir grup komut satırı aracı olacak. Dolayısıyla öncelikle Visual Studio Code, Docker for Mac ve .Net Core kurulumlarınızı gerçekleştirmiş olduğunuza emin olmalısınız. .Net Core RC sürümleri bilgisayarınızda kurulu ise öncelikle bu script yardımıyla kaldırdığınıza emin olun.
Oluşturacağımız Docker dosyalarını düzenlemekte yardımcı olması için Visual Studio için Docker desteği eklentisini kurmanızı tavsiye ederim;
Projemiz hazır olduğuna göre sıra geldi Docker imajı oluşturmaya. Bunun için ihtiyacımız olan tanımlama dosyaları Yeoman ile oluşturduğumuz projemize çoktan eklenmiş durumda. Projemizde yer alan Dockerfile ihtiyacımız olan tanımlamaları barındırmakta;
Dockerfile, bir Docker imajı oluşturulurken başvurulan tanımlama dosyasıdır. Kendine has bir DSL’i olan bu dosyada imaj kalıtımı, gerekli dosyaların imaja atılması, container başlatılırken yapılması gerekenler v.b. tanımları yapabilirsiniz.
Yukarıda gördüğünüz gibi bizim tanımlamamızda öncelik Docker imajımızın Microsoft tarafından hazırlanan dotnet imajının en güncel sürümünden kalıtılacağı belirtilmekte. devamında mevcut klasör içerisiğini imaj içerisinde app klasörü altına atılması gerektiği söylenmekte. Imaj oluşturulurken dotnet restore ve build işlemlerinin yapılması gerektiği ve container’ın tcp 5000 portunu kullanacağı belirtiliyor. Son olarak da uygulamanın nasıl başlatılacağı anlatılmakta.
Dockerfile dosyamız en basit haliyle dotnet barındıran, 5000 portundan bir web uygulaması sunan bir imaj olacak. Docker imaj dosyasını oluşturmak için komut satırında projemizin bulunduğu klasöre geçerek aşağıdaki komutu çalıştırmanız yeterli olacaktır;
docker build -t enterprisecoding-docker-app .
Successfully built satırıyla sonlanan bu komut ile birlikte docker imajımız oluşturulmuş durumda. Aşağıdaki komut yardımıyla çalıştırabiliriz;
docker run -it -p 5000:5000 enterprisecoding-docker-app
Dockerfile içerisinde sadece uygulamanın açacağı portu belirttiğimiz için yukarıdaki mesajı inceleyecek olursanız sunulan ip adresi olarak 0.0.0.0 değeri yer almakta. Uygulamamız karşılanan tüm ip adresleri üzerinden sunulmakta. Tarayıcıdan daha önce olduğu gibi yine http://localhost:5000 adresini yazarak uygulamayı kullanabilirsiniz.
Bilgisayarınızda Kitematic uygulaması kurulu ise az önce oluşturduğumuz Docker imajının bir container içinde çalıştığı buradan görebilir, uygulama loglarını ve web ekranını takip edebilirsiniz.
Tebrik ederim, az önce ilk Asp.Net Core uygulamanızı bir Docker Container’ı içerisinde sundunuz!
Burada dikkat etmeniz gerekli bir kaç konu var. Dikkatinizden kaçmış olabileceğini düşünerek bir daha altını çizmek istiyorum. Dockerfile dosyamıza geri dönecek olursak, uygulama ana klasörümüzdeki tüm dosyaların imaj içerisindeki app klasörüne atılmasını ve ardından bir restore ve build işlemi yapılmasını istemiştik. Bunun anlamı, bu haliyle uygulama kodlarımız oluşturduğumuz imajın içerisinde yer alıyor. Bir sonraki makalemde bir kaç ek adım ve yapılandırmayla nasıl imajımızda sadece çalışan uygulamamızı atabileceğimizi sizlerle paylaşacağım.
Mustafa Torun •
Dostum merak ettiğim bir çok konu bu makalende var, sağol.