Merhaba sevgili takipçilerim,
Uzun zamandır üzerinde çalıştığım bir .NET Core projeyi Azure’da yayınlamak istedim. Fırsat bu fırsat, projeyi Linux Docker containerı olarak yayınlamayı deneyeyim dedim.
Öncelikle şunları söylemeliyim:
- Projenizi Azure’da yayınlamak için Visual Studio’nun Publish seçeneklerini kullandığınızda standart planı seçerseniz ve eğer Azure SQL de kullanıyorsanız ayda 3000 TL’den yüksek faturalar çıkabileceğini dikkate alarak yayın öncesi Azure Portal’dan kullanacağınız servislerini kurmanızı tavsiye ederim. Böylece ekonomik ücretli hizmetleri seçebiliyorsunuz, çünkü Azure portal tüm seçenekleri size sağlıyor.
- Aynı şekilde projenize Docker özelliği eklediğinizde bunu yine Visual Studio ile Azure’a yayınlamak masraflı olacağı bunu tercih etmediğimi belirtmeliyim.
Diyelim ki katmanlı-mimari ile bir proje hazırladınız. Bunu Linux Docker container’ını kullanarak nasıl yayınlarsınız? Daha da ötesi bu işi nasıl ekonomik halledebiliriz? İşte bu makalemde size bunu anlatacağım.
- Katmanlı-mimari ile hazırladığınız projenin Api katmanına Docker özelliği eklemesiniz. (Api katmanınız yoksa UI katmanına da bu işlemi uygulayabilirsiniz) Bu işlemi Visual Studio’dan Api projesine sağ tıklayarak yapabiliyoruz.
- Yalnız oluşan Dockerfile Api projesinin altında oluşuyor. Bundan dolayı Docker Hub bu dosyayı bulamıyor. Bu nedenle Dockerfile’ı çözümünüzün kök dizinine taşıyınız.
- Tüm çözümü GitHub’a gönderiniz.
- Docker Hub’ta bir hesap oluşturunuz. Neden Docker Hub? Docker container’ını saklamak ve oradan çekmek için bir container repository kullanmamız gerekiyor. Azure’dakiler ücretli olduğu için Docker Hub’ı tercih ettim.
- Docker Hub ile GitHub’ı birbirine bağladığınızda, GitHub’taki repository’inizi Docker Hub’a çekebiliyorsunuz, hatta GitHub’a her commit gönderdiğinizde Docker Hub GitHub’tan projenizi çekip otomatik build edebiliyor.
- Docker Hub’daki derlenmiş docker container’ını Azure App Service’ine alıyoruz. Bu aşamada F1 (60 dakika ücretsiz) planı tercih edebilirsiniz. Azure SQL gerekliyse ayda 4$ olan temel planı tercih edebilirsiniz. Elbette Azure SQL işlemlerini çok daha önceden ayarlamış, projedeki connection stringi belirtmiş ve test etmiş olmanız gerekiyor. Azure App Servis’i Docker Hub’taki container’ınızı çekerek yapılandırdığınızda projenizin build’i artık Azure’da yayında demektir.
Mutlu kodlamalar 🙂