Jenkins ile Otomatik Dağıtım
Docker kapsayıcılarınızı hedef ortama dağıtmak için Jenkins’te bir CI/CD işlem hattı oluşturun.
Jenkins ile Otomatik Dağıtım, CoddyKit'te ücretsiz bir Docker & DevOps Fundamentals dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Docker & DevOps Fundamentals öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Docker & DevOps Fundamentals kursu toplamda 4 dersten oluşur.
Otomatik Dağıtıma Giriş
Jenkins ve Docker ile CI/CD hakkındaki son derse hoş geldiniz! Bugün Docker kapsayıcılarınızın dağıtımını otomatikleştirmeye odaklanacağız.
Otomatik dağıtım, yazılımı elle müdahale etmeden üretim veya hazırlık ortamlarına yayınlama işlemidir. Hız, tutarlılık ve güvenilirlik sağladığı için Sürekli Teslimat ve Dağıtımın kritik bir parçasıdır.

Dağıtımı Neden Otomatikleştirmelisiniz?
Uygulamaları elle dağıtmak yavaş, hataya açık ve tutarsız olabilir. Otomasyon bu sorunları giderir:
- Hız: Yeni özellikleri veya düzeltmeleri hızla dağıtın.
- Güvenilirlik: Standartlaştırılmış süreçlerle insan hatalarını azaltın.
- Tutarlılık: Her dağıtımın aynı adımları izlemesini sağlayın.
- Verimlilik: Geliştiricilerin dağıtım görevleri yerine kodlamaya odaklanabilmesi için zaman kazandırın.
Dağıtım İşlem Hattı Aşamaları
Tipik bir Docker dağıtımı Jenkins işlem hattı birkaç önemli aşamadan oluşur:
- Derleme: Docker görüntüsünü oluşturun (önceki derslerde ele alındı).
- Sınama: Görüntü üzerinde otomatik sınamaları çalıştırın.
- Gönderme: Görüntüyü bir Docker Kayıt Defterine gönderin.
- Dağıtım: Görüntüyü kayıt defterinden çekip hedef sunucuda çalıştırın.
- Doğrulama: Yeni dağıtımın sağlıklı olduğunu onaylayın.
Bugün 'Dağıtım' ve 'Doğrulama' aşamalarına odaklanacağız.
Hedef Ortamı Kurma
Jenkins dağıtım yapmadan önce hedef sunucunuzun hazır olması gerekir. Bu genellikle şunları ifade eder:
- Docker Kurulu: Hedef sunucuda Docker Engine kurulu olmalıdır.
- SSH Erişimi: Jenkins'in hedef sunucuya güvenli Kabuk (SSH) erişimi olmalıdır.
- Kullanıcı İzinleri: SSH kullanıcısının Docker komutlarını çalıştırma izinleri olmalıdır.
SSH kimlik bilgilerini genellikle Jenkins içinde güvenli bir şekilde yönetiriz.
SSH için Jenkins Kimlik Bilgileri
Uzak bir sunucuya bağlanmak için Jenkins, SSH kimlik bilgilerini kullanır. Bunlar genellikle Jenkins'in kimlik bilgileri yöneticisinde güvenli bir şekilde saklanan SSH kullanıcı adı ve özel anahtar çiftleridir.
Bir işlem hattı tanımlarken Jenkins'e belirli aşamalarda bu kimlik bilgilerini kullanmasını söyleyebilir ve böylece hedef sunucunuzda komutları çalıştırmasına izin verebilirsiniz.
Temel Dağıtım Betiği Örneği
Aşağıda, bir Docker kapsayıcısını güncellemek için hedef sunucuda çalıştırılabilecek basit bir kabuk betiği yer alıyor. Betik eski kapsayıcıyı durdurur, kaldırır, yeni görüntüyü çeker ve çalıştırır.
APP_NAME ve IMAGE_NAME ortam değişkenleri olarak aktarılır.
#!/bin/bash
# Stop and remove existing container
docker stop ${APP_NAME} || true
docker rm ${APP_NAME} || true
# Pull the new Docker image
docker pull ${IMAGE_NAME}
# Run the new container
docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}
echo "Deployment of ${APP_NAME} complete!"Jenkins İşlem Hattına Entegrasyon
Jenkinsfile içinde, uzak bir ana bilgisayarda komutları çalıştırmak için sshPublisher eklentisini veya SSH aracı yönlendirmesiyle basit bir sh adımını kullanabilirsiniz. SSH'nin yapılandırılmış olduğunu varsayarak temel bir sh adımıyla dağıtım aşamasının nasıl görünebileceği aşağıda gösterilmiştir.
agent { label 'remote-deploy-host' }, bu aşamanın hedef sunucuda çalıştığı anlamına gelir.
stage('Deploy to Production') {
agent { label 'remote-deploy-host' }
steps {
withEnv([
"APP_NAME=my-webapp",
"IMAGE_NAME=myregistry/my-webapp:latest"
]) {
sh '''
docker stop ${APP_NAME} || true
docker rm ${APP_NAME} || true
docker pull ${IMAGE_NAME}
docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}
echo "Deployment successful!"
'''
}
}
}Aşamalı Güncellemeler Gerçekleştirme
Sıfır kesintili dağıtımlar için basitçe durdurup yeniden başlatmak yeterli değildir. Genellikle aşağıdaki gibi bir strateji kullanılır:
- Aşamalı Güncelleme: Hizmetin kullanılabilirliğini koruyarak eski kapsayıcıları yenileriyle teker teker, kademeli olarak değiştirin.
- Mavi/Yeşil Dağıtım: Yeni sürümü (Yeşil) eski sürümün (Mavi) yanında dağıtın, ardından trafiği değiştirin.
Jenkins bunları düzenleyebilse de Docker Swarm veya Kubernetes gibi araçlar daha gelişmiş stratejiler için yerel destek sunar.
Dağıtımı Doğrulama
Dağıtımdan sonra uygulamanın doğru çalıştığını doğrulamak çok önemlidir. Bunun için şunlar yapılabilir:
- Sağlık Denetimleri: Uygulamanın sağlık uç noktasına basit HTTP GET istekleri gönderin.
- Günlük İzleme: Hatalar için kapsayıcı günlüklerini kontrol edin.
- Entegrasyon Sınamaları: Yeni dağıtılan sürüm üzerinde hızlı bir sınama kümesi çalıştırın.
Jenkins işlem hattınız, bu denetimleri otomatikleştirmek için bir 'Doğrulama' aşaması içerebilir.
Bilginizi Sınayın
Bir dağıtım aşamasına ait aşağıdaki Jenkinsfile parçasını inceleyin. docker stop ${APP_NAME} || true komutunun temel amacı nedir?
Özet: Otomatik Dağıtım
Harika iş çıkardınız! Jenkins ve Docker ile otomatik dağıtıma nasıl yaklaşacağınızı öğrendiniz.
- Otomatik dağıtım, hızlı, güvenilir ve tutarlı yayınlar sağlar.
- Hedef ortamların Docker'a ve SSH erişimine ihtiyacı vardır.
- Jenkins, uzak sunuculara bağlanmak için güvenli kimlik bilgileri kullanır.
- Dağıtım betikleri genellikle eski kapsayıcıları durdurur, yeni görüntüleri çeker ve yenilerini başlatır.
- Başarılı dağıtımı doğrulamak için doğrulama adımları kritik öneme sahiptir.
Jenkins ve Docker ile CI/CD kursumuz burada sona eriyor. Bu güçlü araçlarda ustalaşmak için pratik yapmaya devam edin!
Sıkça Sorulan Sorular
“Jenkins ile Otomatik Dağıtım” dersi ücretsiz mi?
Evet — “Jenkins ile Otomatik Dağıtım” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Docker & DevOps Fundamentals kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Docker & DevOps Fundamentals kursu toplamda 4 dersten oluşur.
“Jenkins ile Otomatik Dağıtım” dersinde ne öğreneceğim?
Docker kapsayıcılarınızı hedef ortama dağıtmak için Jenkins’te bir CI/CD işlem hattı oluşturun. Docker & DevOps Fundamentals ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Docker & DevOps Fundamentals öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Docker & DevOps Fundamentals, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Jenkins ile Otomatik Dağıtım” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Docker & DevOps Fundamentals dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Docker & DevOps Fundamentals dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Jenkins’e Giriş
- Jenkins ile Docker İmajları Oluşturma
- Jenkins ile Otomatik Dağıtım
- Jenkinsfile ile Kod Olarak Jenkins Pipeline