AzureDevOps

Deploy Docker Image to App Service with Azure Devops

Merhaba

Bu makalede flask ile yazılmış bir python uygulamasının Docker build ile image haline getirip docker hub’a push ederek daha sonra azure app service üzerinden deploy edeceğiz.

Öncelikle Azure DevOps portal üzerinden yeni bir proje oluşturuyoruz.

-Projeye ait github linki; https://github.com/onuromertunc/Docker-Project-1.git bu link ile kaynak kodları proje içerisine import ediyoruz.

-Source code import ettikten sonra sol kısımdan Pipelines > Create Pipeline tıklıyoruz.
Use the classic editor to create a pipeline without YAML. seçiyoruz.
Select a Source > Azure Repos Git seçiyoruz (kodlarımız azure repo’ya import ettik)
Select a Template > Empty Job seçeneği seçiyoruz.

-Karşımıza aşağıdaki gibi bir ekranın gelmesi gerekiyor. Bu ekranda manuel olarak pipeline tasarlayacağız.
Container’ları azure app servisinde linux bir makine üzerinde çalıştıracağımız için bu kısımda Agent Specification ubuntu latest olarak seçili olmalı.

-Docker Build / Push Task

Öncelikle projemizi build edip, ardından docker hub container registry’e push edeceğiz.
-Aşağıdaki menülerden Agent Job 1‘e + işaretiyle bir Docker task ekliyoruz.

-Bu işlemi yaptıktan sonra https://hub.docker.com/ üzerinden bir kullanıcı oluşturup repository create etmemiz gerekiyor.

buildAndPush task tıkladıktan sonra sağ kısımda açılan menüden ilgili alanları aşağıdaki gibi dolduruyoruz.
Container Registry kısmında new seçeneğini seçerek açılan ekranda registry type’da az önce oluşturduğunuz docker hub hesabını girebilirsiniz.
Container Repository kısmında ise yine az önce oluşturduğunuz repo adını giriyoruz.
Dockerfile mevcut azure git repo’da olduğunu için dizinini belirtiyorum.

-Tüm adımları tamamladıktan sonra üst kısımdan Save & queue diyoruz.

-Pipeline çalışmaya başladı aşağıdaki kısımdan üzerine tıklayarak live olarak logları inceliyoruz.

-Pipeline başarılı bir şekilde çalıştı. docker build -f komutu ile Dockerfile olduğu konumu aradı ve dockerfile içerisindeki dependencyleri kurdu.

-Image dockerhub üzerinde ki repository’e push edilmiş.

-Create Azure App Service – Web App

-Dockerfile > Docker Image adımlarını tamamladıktan sonra artık bu uygulamayı run edeceğimiz ortamı azure üzerinde hazırlayacağız.

-https://portal.azure.com/#home giriş yaptıktan sonra Create Resource > Web App seçeneğini tıklıyoruz.

-Aşağıdaki alanları dolduruyoruz. Ve Create diyoruz. Deployment process biraz zaman alacaktır…

-App Service Plan > Web App oluşturulmuş durumda.

-Bize ait oluşturulan public url gittiğimizde basic bir template bizi karşılıyor. Burada kendi web uygulamamız yayınlayacağız.

-Create App Deploy Task

Artık uygulamamız dağıtabileceğimiz infra tarafıda hazır durumda.

Aşağıdaki menüden + işaretine tıklıyoruz ve app service deploy task oluşturuyoruz.

-Azure App Service Deploy taski ekledikten sonra aşağıdaki alanları dolduruyoruz.

*App service name, oluşturduğumuz subscription üzerinden otomatik olarak oluşturuldu.

-Save ve Run diyoruz. Pipeline başarılı bir şekilde çalışmış durumda ve azure app service üzerine deploy edildi.
Docker image build ederken kullandığımız $(Build.BuildId) tag variable’deki bilgiyi deploy ederken çekeceğiz. Son imaj versiyonunu kullanmış olacağız.

-Azure portal’de kontrol ettiğimizde aynı tag ile deploy edilmiş gözüküyor.


-Pomodoro uygulamamız başarılı bir şekilde up durumda.