Wichtiger Hinweis: Bevor Sie diesen Artikel lesen, müssen Sie über einige Kenntnisse zu Docker-Containern verfügen und die üblichen Docker-Befehle verstehen und beherrschen. Wenn Sie bereits über Kenntnisse zu Docker-Containern verfügen, können wir loslegen! Im Folgenden sind die allgemeinen Schritte zum Ausführen der im Titel beschriebenen Funktion aufgeführt: Erstellen Sie ein Docker-Image-Repository Ändern Sie die Spring Boot-Konfigurationsdatei, um die Docker-Repository-Konfiguration, das Paket und den Upload zum Docker-Image-Repository hinzuzufügen. Ziehen Sie die hochgeladene Image-Datei aus Ihrem eigenen Docker-Image-Repository und führen Sie sie aus Schritt 1: Erstellen Sie ein privates Docker-Image-RepositoryUm ein Docker-Image-Repository zu erstellen, müssen wir uns auf das Docker-Registry-Tool verlassen. Docker-Registry ist ein offizielles Tool, mit dem ein privates Image-Repository erstellt werden kann. Dieser Artikel basiert auf der offiziellen Docker-Registry-Version v2.x: https://docs.docker.com/registry/ 1. Ziehen Sie die Registrierungsabbilddatei Docker-Pull-Registrierung 2. Starten Sie das Image $ docker run -d \ -p 5000:5000 \ -v /opt/data/registry:/var/lib/registry \ Registrierung -d: Daemon-Thread starten 3. Fügen Sie die Datei daemon.json und die Lagerkonfiguration hinzu vim /etc/docker/daemon.json Fügen Sie die folgende Konfiguration hinzu: { "Registrierungsspiegel": [ „https://registry.docker-cn.com“ ], "unsichere-Registrierungen": [ "IhreIP:5000" ] } Fügen Sie die Knotenkonfiguration insecure-registries zur ursprünglichen Datei daemon.json hinzu, yourip: Geben Sie die IP-Adresse Ihrer virtuellen Maschine ein, speichern und beenden Sie, laden Sie die Konfigurationsdatei neu und starten Sie Docker neu systemctl daemon-reload systemctl Neustart Docker 4. Testen Sie das Hochladen des Images in Ihr eigenes Image-Repository. Wir taggen ein Image und laden es mit dem Befehl „docker tag“ in das Repository hoch: docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG] Docker-Tag Ubuntu: neueste 127.0.0.1:5000/Ubuntu: neueste (Das hier zum Test hochgeladene Bild muss nicht mit dem im Artikel identisch sein. Sie können ein Tomcat-Bild ziehen und es dann hochladen.) Zu diesem Zeitpunkt wird ein markiertes Bild generiert Docker-Image ls REPOSITORY TAG BILD ID ERSTELLT VIRTUELLE GRÖSSE Ubuntu aktuell ba5877dc9bec vor 6 Wochen 192,7 MB 127.0.0.1:5000/ubuntu:latest latest ba5877dc9bec vor 6 Wochen 192,7 MB In privates Repository pushen Docker Push 127.0.0.1:5000/ubuntu:neueste Zeigen Sie das Image des privaten Warehouse an (tatsächlich können Sie beim Starten des Warehouse in das bereitgestellte Verzeichnis gehen. In diesem Artikel können Sie die hochgeladene Image-Datei im Verzeichnis /opt/data/registry des Hostcomputers anzeigen). curl 127.0.0.1:5000/v2/_Katalog Laden Sie das private Repository-Image herunter Docker Pull 127.0.0.1:5000/Ubuntu: Neueste Wenn beim Abrufen kein Problem auftritt, bedeutet dies, dass das Spiegel-Repository erstellt wurde. Schritt 2 Ändern Sie die SpringBoot-Konfigurationsdatei, um die Docker-Repository-Konfiguration, das Paket und den Upload zum Docker-Image-Repository hinzuzufügenBevor Sie das SpringBoot-Projekt konfigurieren, müssen Sie den Docker-Container konfigurieren, um das JAR-Paket in das Warehouse hochzuladen. Öffnen Sie die Docker-Remote-API und ändern Sie die Datei. vim /lib/systemd/system/docker.service Ursprünglicher ExecStart: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock Fügen Sie **-H tcp://0.0.0.0:2375** hinzu Nach der Änderung: ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock (Wenn Sie Alibaba Cloud Server verwenden, denken Sie daran, Port 2375 in den Zugriffsregeln zu öffnen!) Speichern und beenden, Konfiguration neu laden und Docker starten systemctl daemon-reload systemctl Neustart Docker Prüfen Sie, ob die Konfiguration erfolgreich war. Docker -H 127.0.0.1 Info Die folgende Ausgabe zeigt eine erfolgreiche Konfiguration an:
Konfigurieren Sie das Springboot-Projekt und fügen Sie die Verpackungskonfiguration wie folgt zur POM-Datei hinzu <Plugin> <groupId>com.spotify</groupId> <artifactId>Docker-Maven-Plugin</artifactId> <version>1.1.0</version> <Hinrichtungen> <Ausführung> <id>Bild erstellen</id> <phase>Paket</phase> <Ziele> <goal>bauen</goal> </Ziele> </Ausführung> </Ausführungen> <Konfiguration> <imageName>jenkins_test/${project.artifactId}:${project.version}</imageName> <dockerHost>http://IhreIP:2375</dockerHost> <baseImage>java:8</baseImage> <Einstiegspunkt>["java", "-jar","/${project.build.finalName}.jar"] </Einstiegspunkt> <Ressourcen> <Ressource> <Zielpfad>/</Zielpfad> <Verzeichnis>${project.build.directory}</Verzeichnis> <include>${project.build.finalName}.jar</include> </Ressource> </Ressourcen> </Konfiguration> </plugin>
Nachdem Sie den obigen Inhalt konfiguriert haben, können Sie ihn verpacken (normales Springboot-Maven-Verpacken oder Idea-Mavenproject-Installation). Kehren Sie nach erfolgreichem Abschluss der Verpackung zum Docker-Container zurück, um das Image-Warehouse anzuzeigen curl 127.0.0.1:5000/v2/_Katalog Nachdem Sie die Existenz bestätigt haben, ziehen Sie das hochgeladene Bild herunter und überprüfen Sie die Bildliste, nachdem der Pull erfolgreich war Docker-Bilder Anzeige wie abgebildet: Dies bedeutet, dass dieser Satz von Vorgängen erfolgreich ist. Das erste Verpacken kann langsam sein, da Docker das Java:8-Basisimage abrufen muss. Beginnen wir mit diesem Bild. docker run -p 8080:8080 Bild-ID -p: Portzuordnung Der Start ist erfolgreich, wie unten gezeigt: Weil der in der Datei application.yml des Springboot-Projekts konfigurierte Serverport 8080 ist. Beim Start müssen Sie 8080:8080 zuordnen. Die erste 8080 ist der Port des Hostcomputers und die zweite 8080 ist der Port des Containers. Bisher wurde alles umgesetzt, was in diesem Artikel implementiert werden muss. Lesen Sie weiter, um weitere Easter Eggs zu entdecken! ! ! ! Im Springboot-Projekt gibt es eine Protokollkonfiguration wie folgt <?xml version="1.0" encoding="UTF-8"?> <Konfiguration debug="false"> <!--Definieren Sie die Speicheradresse der Protokolldatei. Verwenden Sie in der LogBack-Konfiguration keine relativen Pfade.--> <Eigenschaftsname="LOG_HOME" Wert="/home/logs" /> <!-- Konsolenausgabe --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder Klasse="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--Formatierte Ausgabe: %d gibt das Datum an, %thread gibt den Thread-Namen an, %-5level: Level wird 5 Zeichen breit von links angezeigt %msg: Protokollnachricht, %n ist Zeilenumbruch --> <Muster>%d{jjjj-MM-tt HH:mm:ss.SSS} [%Thread] %-5Level %Logger{50} - %msg%n</Muster> </Encoder> </appender> <!-- Täglich Logdateien erstellen --> <appender name="DATEI" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy-Klasse="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--Name der Protokolldatei-Ausgabedatei--> <FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern> <!--Aufbewahrungszeit der Protokolldatei in Tagen--> <MaxHistory>30</MaxHistory> </rollingPolicy> <encoder Klasse="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--Formatierte Ausgabe: %d gibt das Datum an, %thread gibt den Thread-Namen an, %-5level: Level wird 5 Zeichen breit von links angezeigt %msg: Protokollnachricht, %n ist Zeilenumbruch --> <Muster>%d{jjjj-MM-tt HH:mm:ss.SSS} [%Thread] %-5Level %Logger{50} - %msg%n</Muster> </Encoder> <!--Maximale Protokolldateigröße--> <triggeringPolicy-Klasse="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10 MB</MaxFileSize> </triggeringPolicy> </appender> <!-- Protokollausgabeebene --> <root-Ebene="info"> <appender-ref ref="STDOUT" /> <appender-ref ref="DATEI" /> </Wurzel> </Konfiguration> Wir müssen auf die Speicheradresse der für diesen Knoten konfigurierten Protokolldatei achten Wenn wir der traditionellen Bereitstellungsmethode für JAR-Pakete folgen, sollte sich die Protokolldatei im Verzeichnis /home/logs des Hostcomputers befinden. Jetzt stellen wir jedoch fest, dass es kein solches Verzeichnis gibt. Wo liegt also das Problem? Wo werden die Protokolldateien ausgegeben? ? Versuchen wir, den gestarteten Springboot-Container aufzurufen und interaktiv einen bereits laufenden Container aufzurufen Docker exec -it Container-ID Bash Wir können sehen, dass sich darin ein Home-Verzeichnis befindet. Wenn wir die Verzeichnisse nacheinander aufrufen, werden wir feststellen, dass sich die Protokolldatei hier befindet! Denken Sie darüber nach, haben wir den Datenvolumenbefehl nicht schon einmal verwendet? Können wir den Pfad im Container der virtuellen Maschine zuordnen? Probieren Sie es aus! Stoppen Sie den gestarteten Container (lassen Sie ihn uns direkt löschen) Docker stoppt Container-ID Docker RM Container-ID Starten Sie den Container neu docker run -d -p 8080:8080 -v /home/logs:/home/logs Bild-ID Dieses Mal haben wir dem Befehl ein -d hinzugefügt, was bedeutet, dass der Daemon-Thread gestartet wird (im Hintergrund ausgeführt wird). Verwenden Sie den folgenden Befehl, um das gestartete Containerprotokoll anzuzeigen Docker-Protokolle -f Container-ID Wie Sie sehen, ist der Start erfolgreich, daher ist es logisch, dass locback.xml unsere Protokolldatei im Verzeichnis /home/logs des von uns zugeordneten Hosts ausgibt. Werfen wir einen Blick darauf und geben eine Reihe von Befehlen ein. Sie können sehen, dass die Protokolldatei tatsächlich hier ist! Dies ist das Ende dieses Artikels über die detaillierten Schritte zum Verpacken und Hochladen von Spring Boot in das Docker-Repository. Weitere verwandte Inhalte zum Verpacken und Hochladen von Spring Boot finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die folgenden verwandten Artikel weiter. Ich hoffe, Sie werden 123WORDPRESS.COM in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Einführung in die Rolle des HTML-Doctypes
>>: Vue implementiert horizontales Scrollen von Text im Laufschriftstil
Einführung in jQuery Die jQuery-Bibliothek kann e...
Genau wie bei Code können Sie den Tabellen und Sp...
Wenn Sie den Stil „table-layer:fixed“ für eine Ta...
Inhaltsverzeichnis 1. Verwandte Binlog-Konfigurat...
Die Lösung für das Problem, dass Ubuntu 18.04 in ...
Detaillierte Erklärung des Linux-Touch-Befehls: 1...
Der Docker Hub, den wir zuvor verwendet haben, wi...
Lassen Sie uns zunächst über den Wert von Web-Fro...
Inhaltsverzeichnis 1. Vorbereitung 2. MySQL-Versc...
IFNULL(Ausdruck1,Ausdruck2) Wenn expr1 nicht NULL...
Zum Übertragen von Dateien zwischen dem Host und ...
1. Umweltanforderungen 1. Docker 17 und höher wur...
Inhaltsverzeichnis Ein Mord verursacht durch ERR ...
Inhaltsverzeichnis Tabellenkonflikte finden und b...
Vorwort In der Praxis kann es zu folgendem Proble...