Docker+Gitlab+Jenkins erstellt automatisierte Bereitstellung von Grund auf

Docker+Gitlab+Jenkins erstellt automatisierte Bereitstellung von Grund auf

Vorwort:

Nach mehreren Tagen des Studiums und meines eigenen Verständnisses habe ich ein Tutorial zur automatischen Bereitstellung von Docker+Jenkins zusammengestellt. Wenn es Mängel gibt, geben Sie mir bitte weitere Ratschläge. Vielen Dank!

Vorteile von Docker:

Mit Docker können Entwickler ihre Anwendungen und abhängigen Pakete in einen portablen Container packen und diesen dann auf jeder gängigen Linux-Maschine veröffentlichen, um eine Virtualisierung zu erreichen. Docker hat die Art und Weise der Virtualisierung verändert und ermöglicht es Entwicklern, ihre eigenen Ergebnisse zur Verwaltung direkt in Docker einzufügen. Komfort und Geschwindigkeit sind bereits die größten Vorteile von Docker. Aufgaben, die früher Tage oder sogar Wochen dauerten, können heute mit Docker-Containern in Sekunden erledigt werden.
Struktur: Client → Docker_Host (Host) → Warehouse Drei Konzepte Container → Image → Warehouse

Warum Jenkins verwenden:

Bei herkömmlichen Bereitstellungsprojekten müssen wir nach Abschluss des Projekts den Code aus dem Code-Repository lokal übertragen, die Verpackung abschließen, ihn auf den Server hochladen und dann die Betriebsumgebung des Projekts konfigurieren und starten. Dies hat offensichtlich einen Nachteil. Manche Fehler, die während der Entwicklung auftreten, können nicht sofort entdeckt werden, was bei der späteren Behebung der Fehler zu einer Kettenreaktion führen kann. Darüber hinaus müssen wir den Code nach der Änderung häufig neu verpacken, auf den Server hochladen und dann ausführen. Bei vielen Projekten sind wir durch solche sich wiederholenden mechanischen Vorgänge überfordert.
Nachdem wir Jenkins verwendet haben, können wir eine wirklich automatisierte Bereitstellung erreichen. Wenn unser Code aktualisiert und in das Code-Repository übertragen wurde, müssen wir nur in der visuellen Schnittstelle von Jenkins auf das Build-Projekt klicken. Jenkins ruft den Code automatisch entsprechend der von uns konfigurierten Repository-Adresse ab, verpackt ihn automatisch und führt ihn aus, um die automatisierte Bereitstellung abzuschließen.


1. Docker installieren

Docker erfordert eine CentOS-Kernelversion über 3.10. Überprüfen Sie die Voraussetzungen auf dieser Seite, um festzustellen, ob Ihre CentOS-Version Docker unterstützt.

1. Überprüfen Sie Ihre aktuelle Kernelversion mit dem Befehl uname -r

uname -r

2. Melden Sie sich mit Root-Rechten bei CentOS an. Stellen Sie sicher, dass das Yum-Paket auf die neueste Version aktualisiert ist.

yum -y aktualisieren

3. Deinstallieren Sie die alte Version (falls Sie eine alte Version installiert haben)

yum entferne Docker Docker-Common Docker-Selinux Docker-Engine

4. Installieren Sie die erforderlichen Pakete. yum-util stellt die Funktion yum-config-manager bereit. Die anderen beiden sind Abhängigkeiten des Devicemapper-Treibers.

yum install -y yum-utils Gerätemapper-Persistent-Data lvm2

5. Richten Sie die Yum-Quelle ein

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6. Sie können alle Docker-Versionen in allen Repositorys anzeigen und eine bestimmte Version zur Installation auswählen

yum-Liste docker-ce --showduplicates | sort -r

7. Docker installieren

sudo yum install -y docker-ce #Da im Repo standardmäßig nur das stabile Repository aktiviert ist, wird hier die neuste stabile Version 18.03.1 installiert

8. Starten und zum Booten hinzufügen

systemctl start docker //Docker starten
systemctl enable docker //So einstellen, dass es beim Booten gestartet wird

9. Überprüfen Sie, ob die Installation erfolgreich war (das Vorhandensein von Client- und Serviceteilen zeigt an, dass die Docker-Installation und der Start erfolgreich waren).

Docker-Version

2. Jenkins mit Docker installieren

1. Suche nach dem Jenkins-Image im Repository

Docker-Suche Jenkins        

jenkins gibt den Bildnamen an, nach dem Sie suchen möchten. Die Bilder, die jenkins in der BESCHREIBUNG enthalten, werden ebenfalls angezeigt.

2. Ziehen Sie das Jenkins-Image in die lokalen Images

Docker zieht Jenkins/Jenkins
Beachten Sie, dass die hier abgerufene Version Jenkins/Jenkins ist, da die vorherige Jenkins-Version nur 2.60 war, was dazu führte, dass die Installation des Jenkins-Plugins fehlschlug. Sie können die Version beim Abrufen angeben. Beispielsweise bedeutet docker pull java:8, dass die abgerufene Java-Version 8 ist. Wenn Sie keine Version angeben, ist die neueste Version die Standardversion.

3. Starten Sie den Jenkins-Container

docker run --name myjenkins -d -p 8081:8080 -p 8085:8085 jenkins/jenkins

–name myjenkins gibt den Containernamen als myjenkins an
-d bedeutet, dass es im Hintergrund ausgeführt wird
-p 8081: 8080 gibt die Zuordnung zwischen dem Docker-Host-Port (dem Host, auf dem Docker ausgeführt wird) und dem Port an, der im Docker-Container ausgeführt wird.
8081 ist der Port von DockerHost und 8080 ist der Port im Container. Externer Zugriff auf 8081 kann auf Port 8080 des Docker-Containers zugreifen.
jenkins/jenkins bedeutet, dass das gestartete Image jenkins/jenkins ist. Sie können das lokale Image über Docker-Images anzeigen.

veranschaulichen:
1. Auf die Ports im Container kann von außen nicht direkt zugegriffen werden, da die Portzuordnung zwischen dem Docker-Host und dem Container konfiguriert werden muss. Es können mehrere Zuordnungen konfiguriert werden.
Da das Projekt später bereitgestellt werden muss, konfigurieren Sie die Portnummer des Projekts im Voraus -p 8085:8085. Sie können sie auch unkonfiguriert lassen und die Portzuordnungsdatei später ändern.
2. Tatsächlich können wir den zweiten Schritt des Pull-Vorgangs auch weglassen und direkt einen Container starten. Docker prüft zunächst, ob dieses Image in den lokalen Images vorhanden ist. Wenn nicht, wird es zum DockerHub-Warehouse heruntergeladen.


3. Initialisierungsvorgang der Anmeldung bei Jenkins

1. Greifen Sie auf die Jenkins-Schnittstelle zu. Wenn die IP meiner virtuellen Maschine beispielsweise 192.168.199.188 lautet, geben Sie 192.168.199.188:8081 ein und drücken Sie die Eingabetaste, um die folgende Schnittstelle anzuzeigen.

Bildbeschreibung hier einfügen

Geben Sie den Container ein, in dem Jenkins installiert ist

docker exec -it myjenkins bash // Den angegebenen Container aufrufen, myjenkins steht dabei für den Namen, den wir beim Starten des Containers angegeben haben cat /var/jenkins_home/secrets/initialAdminPassword` // Das Passwort anzeigen, das Passwort kopieren und in das Textfeld einfügen

Funktionsdiagramm:

Bildbeschreibung hier einfügen

2. Installieren Sie das Plug-In. Hier installieren wir das von Jenkins empfohlene Plug-In.

Klicken Sie hier, um das empfohlene Plugin zu installieren:

Bildbeschreibung hier einfügen

3. Die Installation wird ausgeführt. Bitte warten Sie einen Moment. Klicken Sie nach Abschluss der Installation auf „Fortfahren“.

Bildbeschreibung hier einfügen

4. Erstellen Sie einen Administratorbenutzer, oder verwenden Sie zum Fortfahren direkt das Administratorkonto:

Bildbeschreibung hier einfügen

5. Die Instanzkonfiguration wird direkt gespeichert:

Bildbeschreibung hier einfügen

6. Beginnen Sie mit der Nutzung von Jenkins:

Bildbeschreibung hier einfügen

7. Gehen Sie zur Jenkins-Homepage:

Bildbeschreibung hier einfügen

4. Globale Toolkonfiguration (Konfigurationsumgebung)

Klicken Sie auf Systemverwaltung – Globale Toolkonfiguration

1. JDK konfigurieren: Automatische Installation abbrechen (die JDK-Umgebung wird normalerweise im Container installiert), den Docker-Container aufrufen, mit echo $JAVA_HOME den JDK-Installationspfad abrufen und den Pfad in das Textfeld JAVA_HOME kopieren

Bildbeschreibung hier einfügen

2. Maven konfigurieren: Geben Sie einen Namen an, installieren Sie automatisch und klicken Sie auf Speichern

Bildbeschreibung hier einfügen

5. Installieren Sie das Maven-Plugin Klicken Sie auf Systemverwaltung – Plugin-Verwaltung

Bildbeschreibung hier einfügen

6. Erstellen Sie eine neue Aufgabe, um die automatische Bereitstellung abzuschließen

1. Kehren Sie zur Startseite zurück, klicken Sie auf Neue Aufgabe und erstellen Sie ein Maven-Projekt

Bildbeschreibung hier einfügen

2. Klicken Sie auf OK und kehren Sie zur Startseite zurück. Wir haben eine zusätzliche Aufgabe namens SpringBoot_AutoTest1 gefunden (die obige Aufgabe ist die vorherige, ignorieren Sie sie also).

Bildbeschreibung hier einfügen

3. Klicken Sie auf den Projektnamen SpringBoot_AutoTest1 --> Klicken Sie auf Konfigurieren

3.1 Quellcodeverwaltung (konfigurieren Sie die Git-Repository-Adresse, Jenkins ruft den Code aus dem Remote-Repository ab):

Bildbeschreibung hier einfügen

3.2 Build-Konfiguration (Jenkin führt den Verpackungsbefehl nach dem Pullen des Codes automatisch aus):

Bildbeschreibung hier einfügen

3.3 Konfigurieren Sie das Shell-Skript (nachdem die Jenkins-Verpackung abgeschlossen ist, wird das Shell-Skript automatisch ausgeführt, um das Projekt zu starten und eine automatische Bereitstellung zu realisieren) und speichern Sie es dann:

Bildbeschreibung hier einfügen

Angehängtes Shell-Skript:

#!/bin/bash
# #!/bin/bash bedeutet, dass dieses Skript /bin/bash zum Interpretieren und Ausführen verwendet. Darunter ist #! ein spezieller Indikator, gefolgt vom Shell-Pfad, der dieses Skript interpretiert. Bash ist nur ein Shell-Typ. Es gibt viele andere Shells, wie zum Beispiel: sh, csh, ksh, tcsh, ...
# #!/bin/bash kann nur in die erste Zeile gesetzt werden. Wenn dahinter #! steht, kann dies nur als Kommentar betrachtet werden.

#Dienstname SERVER_NAME = SpringBoot_AutotTest

#Quell-JAR-Pfad: Nachdem die MM-Verpackung abgeschlossen ist, kann der JAR-Paketname im Zielverzeichnis auch als War-Paket ausgewählt und das War-Paket nach Tomcat verschoben werden.
JAR_NAME=jekins-0.0.1-SNAPSHOT


#Zielpaket generiert das Verzeichnis des JAR-Pakets JAR_PATH = /var/jenkins_home/workspace/SpringBoot_AutotTest/target # Basierend auf dem spezifischen Verpackungsspeicherort können Sie das Projekt einmal erstellen und das gepackte Verzeichnis über das Protokoll anzeigen. #Verschieben Sie nach dem Verpacken das IAR-Paket in das Verzeichnis, in dem das JAR-Paket ausgeführt wird JAR_WORK_PATH = /var/jenkins_home/workspace/SpringBoot_AutotTest/target

echo "Prozess-ID abfragen-->$SERVER_NAME"
PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`
echo "Prozess-ID abrufen: $PID"
echo "Prozess beenden"
für ID in $PID
Tun
töten -9 $id
echo "$id getötet" 
Erledigt
echo "Prozess beenden abgeschlossen"

#Kopieren Sie das JAR-Paket in das Ausführungsverzeichnis_

echo"Kopieren Sie das JAR-Paket in das Ausführungsverzeichnis:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"
cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
echo "Komplettes Kopieren des JAR-Pakets"
cd $JAR_WORK_PATH
#Dateiberechtigungen ändern chmod 755 $JAR_NAME.jar

# Frontdesk-Start #java -jar $JAR_NAME.jar

#Hintergrundstart BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar &

Dies ist das Ende dieses Artikels über das Erstellen einer automatisierten Bereitstellung von Grund auf mit Docker+Gitlab+Jenkins. Weitere Informationen zur automatisierten Bereitstellung mit Docker+Gitlab+Jenkins finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Docker erstellt Jenkins und automatisiert die Schritte zum Verpacken und Bereitstellen von Projekten
  • Verwenden der Docker+Jenkins+Python3-Umgebung zum Erstellen eines äußerst detaillierten Tutorials
  • Docker erstellt eine Jenkins+Maven-Plattform zum Erstellen und Bereitstellen von Code
  • Beispiel für den Aufbau eines Jenkins-Dienstes mit Docker
  • Beim Einrichten von Jenkins in einer Docker-Umgebung werden im Konsolenprotokoll beim Erstellen von Aufgaben verstümmelte chinesische Zeichen angezeigt
  • Implementierung des Jenkins-Automatisierungstools mithilfe von Docker

<<:  So wählen Sie zwischen MySQL CHAR und VARCHAR

>>:  10 Tipps zur Verbesserung der Website-Benutzerfreundlichkeit

Artikel    

Artikel empfehlen

Möglichkeiten zur Verbesserung der MongoDB-Leistung

MongoDB ist eine Hochleistungsdatenbank, bei der ...

Detaillierte Installation und Verwendung von RocketMQ in Docker

Um nach RocketMQ-Images zu suchen, können Sie auf...

Designideen für MySQL-Backup und -Wiederherstellung

Hintergrund Lassen Sie mich zunächst den Hintergr...

So aktualisieren Sie CentOS7 auf CentOS8 (detaillierte Schritte)

Dieser Artikel erläutert anhand eines konkreten B...

Zusammenfassung des Wissens zu langsamen MySQL-Protokollen

Inhaltsverzeichnis 1. Einführung in Slow Log 2. L...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.17

Dieser Artikel enthält das grafische Tutorial zur...

Jenkins erstellt Docker-Images und überträgt sie in das Harbor-Warehouse.

Inhaltsverzeichnis Docker-Datei pom.xml Jenkins-K...

Design-Referenz: Erfolgsbeispiel für die Erstellung einer WordPress-Website

Jede dieser 16 Sites ist eine sorgfältige Lektüre ...

Wie MLSQL Stack das Stream-Debugging vereinfacht

Vorwort Ein Klassenkamerad untersucht die Streami...

Dreißig HTML-Codierungsrichtlinien für Anfänger

1. HTML-Tags immer schließen Im Quellcode der vor...

So verwenden Sie gdb zum Debuggen von Kerndateien in Linux

1.core-Datei Wenn während der Programmausführung ...