Docker & DevOps Fundamentals · Lektion

Automatisierte Bereitstellung mit Jenkins

Erstellen Sie eine CI/CD-Pipeline in Jenkins, um Ihre Docker-Container in einer Zielumgebung bereitzustellen.

Lektion 3 von 411 Schritte

Automatisierte Bereitstellung mit Jenkins ist eine kostenlose Docker & DevOps Fundamentals-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Docker & DevOps Fundamentals-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Docker & DevOps Fundamentals-Kurs umfasst insgesamt 4 Lektionen.

Einführung in die automatisierte Bereitstellung

Willkommen zur letzten Lektion über CI/CD mit Jenkins und Docker! Heute konzentrieren wir uns auf die Automatisierung der Bereitstellung Ihrer Docker-Container.

Automatisierte Bereitstellung bezeichnet die Veröffentlichung von Software in Produktions- oder Staging-Umgebungen ohne manuelles Eingreifen. Sie ist ein wichtiger Bestandteil von Continuous Delivery und Continuous Deployment und sorgt für Geschwindigkeit, Konsistenz und Zuverlässigkeit.

Automatisierte Bereitstellung mit Jenkins — Illustration 1

Warum die Bereitstellung automatisieren?

Anwendungen manuell bereitzustellen, kann langsam, fehleranfällig und uneinheitlich sein. Automatisierung begegnet diesen Herausforderungen:

  • Geschwindigkeit: Neue Funktionen oder Fehlerbehebungen schnell bereitstellen.
  • Zuverlässigkeit: Menschliche Fehler durch standardisierte Prozesse reduzieren.
  • Konsistenz: Sicherstellen, dass jede Bereitstellung denselben Schritten folgt.
  • Effizienz: Entwicklerinnen und Entwickler entlasten, damit sie sich auf das Programmieren statt auf Bereitstellungsaufgaben konzentrieren können.

Phasen der Bereitstellungspipeline

Eine typische Jenkins-Pipeline für die Docker-Bereitstellung umfasst mehrere wichtige Phasen:

  • Build: Das Docker-Image erstellen (in vorherigen Lektionen behandelt).
  • Test: Automatisierte Tests für das Image ausführen.
  • Push: Das Image in eine Docker-Registry übertragen.
  • Deploy: Das Image aus der Registry abrufen und auf einem Zielserver ausführen.
  • Verify: Bestätigen, dass die neue Bereitstellung fehlerfrei funktioniert.

Heute konzentrieren wir uns auf die Phasen „Deploy“ und „Verify“.

Zielumgebung einrichten

Bevor Jenkins eine Bereitstellung durchführen kann, muss Ihr Zielserver vorbereitet sein. Das bedeutet normalerweise:

  • Docker installiert: Auf dem Zielserver muss Docker Engine installiert sein.
  • SSH-Zugriff: Jenkins benötigt einen sicheren Shell-Zugriff (SSH) auf den Zielserver.
  • Benutzerberechtigungen: Der SSH-Benutzer benötigt Berechtigungen zum Ausführen von Docker-Befehlen.

SSH-Anmeldedaten verwalten wir normalerweise sicher innerhalb von Jenkins.

Jenkins-Anmeldedaten für SSH

Für die Verbindung mit einem Remote-Server verwendet Jenkins SSH-Anmeldedaten. Dabei handelt es sich normalerweise um sicher im Anmeldedaten-Manager von Jenkins gespeicherte Paare aus SSH-Benutzername und privatem Schlüssel.

Beim Definieren einer Pipeline können Sie Jenkins anweisen, diese Anmeldedaten für bestimmte Phasen zu verwenden, sodass Jenkins Befehle auf Ihrem Zielserver ausführen kann.

Beispiel für ein einfaches Bereitstellungsskript

Hier sehen Sie ein einfaches Shell-Skript, das auf einem Zielserver ausgeführt werden kann, um einen Docker-Container zu aktualisieren. Es stoppt den alten Container, entfernt ihn, ruft das neue Image ab und startet es.

APP_NAME und IMAGE_NAME würden als Umgebungsvariablen übergeben.

#!/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!"

In die Jenkins-Pipeline integrieren

In einer Jenkinsfile können Sie das Plugin sshPublisher oder einen einfachen sh-Schritt mit SSH-Agent-Weiterleitung verwenden, um Befehle auf einem Remote-Host auszuführen. So könnte eine Deploy-Phase mit einem einfachen sh-Schritt aussehen, vorausgesetzt, SSH ist konfiguriert.

agent { label 'remote-deploy-host' } bedeutet, dass diese Phase auf dem Zielserver ausgeführt wird.

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!"
      '''
    }
  }
}

Rolling Updates erreichen

Für Bereitstellungen ohne Ausfallzeit reicht ein einfaches Stoppen und Starten nicht aus. Normalerweise würden Sie eine Strategie wie die folgende verwenden:

  • Rolling Update: Alte Container schrittweise und einzeln durch neue ersetzen und dabei die Verfügbarkeit des Dienstes sicherstellen.
  • Blue/Green Deployment: Die neue Version (Green) neben der alten (Blue) bereitstellen und anschließend den Datenverkehr umschalten.

Jenkins kann diese Abläufe orchestrieren, aber Tools wie Docker Swarm oder Kubernetes bieten native Unterstützung für fortgeschrittenere Strategien.

Bereitstellung überprüfen

Nach der Bereitstellung ist es wichtig zu überprüfen, ob die Anwendung ordnungsgemäß läuft. Dazu können gehören:

  • Health Checks: Einfache HTTP-GET-Anfragen an den Health-Endpunkt der Anwendung.
  • Protokollüberwachung: Die Container-Logs auf Fehler überprüfen.
  • Integrationstests: Eine kurze Reihe von Tests für die neu bereitgestellte Version ausführen.

Ihre Jenkins-Pipeline kann eine „Verify“-Phase enthalten, um diese Prüfungen zu automatisieren.

Ihr Wissen überprüfen

Betrachten Sie das folgende Jenkinsfile-Snippet für eine Deploy-Phase. Was ist der Hauptzweck von docker stop ${APP_NAME} || true?

Zusammenfassung: Automatisierte Bereitstellung

Gute Arbeit! Sie haben gelernt, wie Sie eine automatisierte Bereitstellung mit Jenkins und Docker umsetzen.

  • Automatisierte Bereitstellung sorgt für schnelle, zuverlässige und konsistente Releases.
  • Zielumgebungen benötigen Docker und SSH-Zugriff.
  • Jenkins verwendet sichere Anmeldedaten, um sich mit Remote-Servern zu verbinden.
  • Bereitstellungsskripte stoppen normalerweise alte Container, rufen neue Images ab und starten neue Container.
  • Überprüfungsschritte sind entscheidend, um eine erfolgreiche Bereitstellung zu bestätigen.

Damit ist unser Kurs zu CI/CD mit Jenkins und Docker abgeschlossen. Üben Sie weiter, um diese leistungsfähigen Tools sicher zu beherrschen!

Kostenlos starten

Lerne Docker & DevOps Fundamentals mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
12
Lektionen
48

Häufig gestellte Fragen

Ist die Lektion „Automatisierte Bereitstellung mit Jenkins“ kostenlos?

Ja — der vollständige Text von „Automatisierte Bereitstellung mit Jenkins“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Docker & DevOps Fundamentals-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Docker & DevOps Fundamentals-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Automatisierte Bereitstellung mit Jenkins“?

Erstellen Sie eine CI/CD-Pipeline in Jenkins, um Ihre Docker-Container in einer Zielumgebung bereitzustellen. Du übst Docker & DevOps Fundamentals mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Docker & DevOps Fundamentals zu starten?

Keine Vorkenntnisse erforderlich. Docker & DevOps Fundamentals auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Automatisierte Bereitstellung mit Jenkins“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Docker & DevOps Fundamentals-Lektion Code schreiben und ausführen?

Ja. Jede Docker & DevOps Fundamentals-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Einführung in Jenkins
  2. Docker-Images mit Jenkins erstellen
  3. Automatisierte Bereitstellung mit Jenkins
  4. Jenkins Pipeline as Code mit Jenkinsfile
← Zurück zu Docker & DevOps Fundamentals