.Net Core Projemizi Docker Compose ve Jenkins yardımı ile ayağa kaldırma Part 2
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.
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 override içinde yukarıda docker-compose içinde belirdiğimiz servislerin (Port, Environment, Volume vb..) detaylarını verdiğimiz dosyadır.
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.
Şifre yada SSH anahtarı belirledikten sonra oluşturur butonuna basıyoruz,
bir iki dakika sonra VM(Virtual Machine) digital ocean üzerinden bir tane droplet oluşturmuş olduk.
Bağlantı sağlamak için MobaXterm bu linkten bakabilirsiniz. Oluşturulan ubuntu sunucumuza bağlantı sağlıyoruz.
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 --version yazarak aşağıdaki çıktıyı alabilirsiniz.
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;
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.
Daha sonra nano docker-compose.yml yazarak aşağıdaki kod bloğunu açılan sayfaya ekliyorum.
Sonra nano docker-compose.override.yml yazarak aşağıdaki kod bloğunu açılan sayfaya ekliyorum.
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,
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.
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.
Basic paket yüklemelerini gerçekleştirdikten sonra bir kaç dakika sürebilir. Yükleme bittikten sonra,
aşağıdaki gibi ilk oluşturacağımız admin için gerekli bilgileri istiyor ve gerekli bilgileri girerek devama tıklıyoruz.
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.
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.
İ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.
Açılan ekranda github project kısmını seçerek github proje linki project url kısmındaki inputa ekliyoruz.
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,
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.
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.
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.
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.
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.
Kayıt bittikten sonra manuel olarak build alanına tıklayarak işlemi başlatabiliriz.
Çalışan işlemin üstüne tıklayarak console çıktılarını adım adım takip edebiliriz.
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.
İş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.
Kaynakça
Okuduğunuz için teşekkürler. Bir sonraki yazıda görüşmek dileğiyle…