.Net Core Projemizi Docker Compose ve Jenkins yardımı ile ayağa kaldırma Part 2

ihsan güç
6 min readMay 19, 2022

Bu yazımda bir .Net core projesini jenkins kullanarak ve digitalocean cloud servisi yardımı ile bir tane virtual machine oluşturarak projemizi ayağa kaldırma işlemini basit bir örnek ile inceleyeceğiz.

Resim 1

Daha önce monolit projemizin dockerfilelarını oluşturduk ve bu linkten ulaşabilirsiniz. Hepsini tek tek ayağa kaldırmak yerine docker-compose ve docker-compose.yml oluşturarak tek bir yerden yöneterek ayarlamalar yaparak ayağa kaldıracağız. Aşağıdaki örnekte her bir servis (Appone, AppTwo ve ocelot) için bir tane dockerfile yolu, image ismini veriyoruz.

docker-compose.yml

Docker compose override içinde yukarıda docker-compose içinde belirdiğimiz servislerin (Port, Environment, Volume vb..) detaylarını verdiğimiz dosyadır.

docker-compose-override.yml

Proje içerisinde docker durumlarını bitirdikten sonra bir tane Virtudal machine yardımı ile projemizi ayağa kaldırıma işlemini gerçekleştireceğiz.

Digital Ocean’dan github daki projemizi ayağa kaldırmak için bir tane ubuntu VM oluşturuyoruz.

Digital Ocean VM oluşturma alanı.

Şifre yada SSH anahtarı belirledikten sonra oluşturur butonuna basıyoruz,

Oluştuğunu VM beklediğimiz kısım.

bir iki dakika sonra VM(Virtual Machine) digital ocean üzerinden bir tane droplet oluşturmuş olduk.

Oluştuğunu VM ufak detayları

Bağlantı sağlamak için MobaXterm bu linkten bakabilirsiniz. Oluşturulan ubuntu sunucumuza bağlantı sağlıyoruz.

MobaXterm Arayüzü

Ubuntu sunucumuza Docker kurulumunu bu linkten ve docker compose kurulumunu bu linkten gerçekleştireceğiz. Aşağıdaki kodu ubunutu terminaline yazıyoruz.

curl -fsSL https://get.docker.com -o get-docker.sh

İndirilen get-docker.sh’ı aşağıdaki kodu yazarak Docker’ı indiriyoruz. Kurulum yaptıktan sonra get-docker.sh silebilir (rm get-docker.sh ile silinebiliriz).

sh get-docker.sh
Docker Kurulumu

Docker --version yazarak aşağıdaki çıktıyı alabilirsiniz.

Docker Version kontrol

Docker Compose kurulumu için yukarıda verilen linke gidiyoruz ve aşağıdaki kod bloklarını ubuntu terminaline yazıyoruz.

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose

Docker ve docker compose kurulumunu gerçekleştirdikten docker-compose --version yazarak kontrol sağlayabiliriz.

Bir sonraki işlem jenkinsi kurarak var olan projemizi ubuntu VM üzerinden build ve kaldırıma işlemi gerçekleştireceğiz. Jenkins için bir tane dockerfile, docker-compose.yml ve docker-compose.override.yml ekleyerek sunucu üzerinde çalıştırarak jenkinsi manuel oluşturacağız. Öncellikle bir tane klasör oluşturarak dosyaları o kısma ekliyeceğiz. mkdir jenkins diyerek bir tane jenkins klasörü oluşturuyoruz;

Docker üzerinden jenkins kurulumu

nano Dockerfile (Dosya eğer yoksa dosyayı oluşturur varsa otomatik onu okuyarak ekrana yazar) diyerek bir tane dockerfile oluşturuyorum ve aşağıdaki kod bloğunu açılan sayfaya ekliyorum.

Jenkins için dockerfile

Daha sonra nano docker-compose.yml yazarak aşağıdaki kod bloğunu açılan sayfaya ekliyorum.

Jenkins için docker-compose.yml

Sonra nano docker-compose.override.yml yazarak aşağıdaki kod bloğunu açılan sayfaya ekliyorum.

Jenkins için docker-compose-override.yml

Jenkins için bütün dosyaları oluşturduktan sonra geriye sadece ubuntu terminaline docker-compose up -d diyerek jenkins kurulumunu başlatıyoruz ve docker-compose.override.yml ayarladığımız gibi 8080 portu üzerinden ayağa kaldırıyoruz. public ip digital ocean dan aldığımız için dışarıya port açmaya gerek yok direk olarak public ip adres http://+:8080 yazarak kurduğumuz jenkins sitesine giderek build ve çalıştırma için gerekli adamlara başlayacağız.

Kurduğumuz jenkinse 8080 bağlandıktan sonra bizi ilk başta karşılayan ekran aşağıdaki ekran olacaktır ve jenkinsi ilk defa kurduğumuzdan dolayı herhangi aşağıdaki ekran sadece tek bir seferlik karşımıza çıkacaktır. Administrator password kısmını bulmak için,

Jenkinsin bizi ilk karşıladığı kısım

docker ps -a yazarak çalışan container’ları görüntülüyoruz ve docker logs jenkins_container_id jenkins loglarını buradan görüntülere biliyoruz. Aşağıdaki resimde Administrator password en alt kısımda 2 yıldız işaretinin altına görünecektir o alphanumeric sayısını sayfadaki inputun içine ekliyerek devam ediyoruz.

Docker logs kullanarak Jenkins loglarından Administrator Password bulduğumuz alan.

Kurulum aşaması geliyor ekrana ve install suggested plugins(Basic paket) veya select plugins to install (İstersek özelleştirebiliyoruz.) biz basic paketi seçerek devam ediyoruz.

Web üzerinden Jenkins kurulumu 1

Basic paket yüklemelerini gerçekleştirdikten sonra bir kaç dakika sürebilir. Yükleme bittikten sonra,

Web üzerinden Jenkins kurulumu 2

aşağıdaki gibi ilk oluşturacağımız admin için gerekli bilgileri istiyor ve gerekli bilgileri girerek devama tıklıyoruz.

Web üzerinden Jenkins için admin oluşturma alanı

Daha sonra tertemiz bir sayfa bizi karşılıyor ve bu kısımda projemiz github’ta olduğundan dolayı github için gerekli pluginleri yükleyeceğiz.

Jenkins kurulumunu bittiğini kısım

Sağ kısımdaki menüdeki kullanacağımız kısımlar;

  • New Item: Yeni bir tane çalıştırmak istediğimiz öğe ekleyebildiğimiz alandır.
  • People: Projeye bağlantı sağlayan kişiler.
  • Build History: Projede ne kadar iş çalıştırırsak otomatik olarak o kısma düşerek o kısımdan ayrıca görüntüleyebiliyoruz.
  • Manage Jenkins: İndirmek istediğimiz pluginlerin olduğu alandır.

Manage Jenkins tıklıyarak github için gerekli 3 tane plugini ekledikten sonra install without restart diyerek indirdikten sonra jenkins’e restart atarak pluginleri kullanabileceğiz.

  • Github Authentication: Github kimlik doğrulaması için gerekli.
  • Github Webhook Trigger: Eğer kullanmak istersek github’a bir tane commit atığımızda otomatik olarak oluşturduğumuz işi çalıştır diyebiliyoruz.
  • Github Integration: Github entegrasyonu için gerekiyor.
Github bağlantıları sağlamak için indirdiğimiz pluginler

İndirme işlemi bittikten sonra sağ kısımdaki menüden new item diyerek bir tane Freestyle project tıklayarak ve isim giyerek ok tuşuna basıyoruz.

Bir tane freestyle oluşturduğumuz alan

Açılan ekranda github project kısmını seçerek github proje linki project url kısmındaki inputa ekliyoruz.

Freestyle ayarlarını yaptığımız alan 1

Daha sonra Source Code Management altında git kısmını seçiyoruz ve yukarıda eklediğimiz linki buraya da ekleyerek devam ediyoruz fakat aşağıdaki gibi eğer alert çıkıyorsa,

Freestyle ayarlarını yaptığımız alan 2
github settings > Developer settings > Personal access tokens 

yukarıdaki yol güzergahını takip ederek bir tane token oluşturarak aşağıdaki gibi ayarlamaları yaparak sonra create tuşuna basılır. Github bir tane token oluşturup ekranda gösterecektir.

Freestyle ayarlarını yaptığımız alan 3

Credentials altındaki Add butonuna tıklayarak aşağıdaki gibi bir ekran çıkıyor ve github dan aldığımız token’ı password kısmına ekleyerek bir tane Credential oluşturmuş oluyoruz.

Freestyle ayarlarını yaptığımız alan 4

Oluşturduğumuz Credentialı Credentials dropdown kısmından eklediğimiz credentialı seçiyoruz ve alert durumunun ortadan kalktığını gördükten sonra Branches to build altında Branch Specifier altında çalıştığımız branchi yazarak build kısmına geçiş yapıyoruz.

Freestyle ayarlarını yaptığımız alan 5

Eğer istersek bu kısımdan Build Triggers kategorisi altında github hook trigger for GITScm polling tıkayarak commit yaptığınız anda bu işlemi manuel değil otomatik gerçekleştirebileceğiz.

Freestyle ayarlarını yaptığımız alan 6

Build kısmında execute shell seçerek aşağıdaki gibi dolduruyoruz. Proje daha hızlı build alsın diye paralel çalıştıracağız bir sonraki adımda daha önce çalıştırdığımız uygulamaları down edeceğiz ve tekrardan tekrardan ayağa kaldıracağız ve build sırasında oluşan none image silerek ekstra yer kaplama olayını çözmüş olacağız. En son kısımda save diyerek bir tane Freestyle project oluşturmuş olacağız.

Freestyle ayarlarını yaptığımız alan 7

Kayıt bittikten sonra manuel olarak build alanına tıklayarak işlemi başlatabiliriz.

Freestyle ayarlarını bitirdikten sonra build kısmını yaptığımız yer

Çalışan işlemin üstüne tıklayarak console çıktılarını adım adım takip edebiliriz.

Build kısmını takip ettiğimiz alan

Eğer başarılı bir şekilde biterse otomatik olarak yeşil eğer hata olursa console ekranında hangi alanda hata verdiyse otomatik olarak o kısımda görülür ve işlem direk build ekranında kırmızı olarak gözükür.

Build başarılı bir şekilde gösteren alan.

İşlem başarılı bir şekilde gerçekleştiğinden dolayı ubuntu terminal üzerinden docker ps -a yazarak jenkins yardımı ile oluşturduğumuz projenin imagelerini görebiliyoruz ve aşağıdaki 5000 port’a bağlanarak artık test edebiliriz.

Projemizin Imageleri

Kaynakça

Okuduğunuz için teşekkürler. Bir sonraki yazıda görüşmek dileğiyle…

--

--