1. Einführung in das Docker-Maven-PluginIn unserem kontinuierlichen Integrationsprozess verwendet die Projektentwicklung im Allgemeinen Maven zum Kompilieren und Verpacken und anschließenden Generieren von Bildern. Indem wir die Bilder online stellen, können wir die Online-Effizienz erheblich verbessern und gleichzeitig die Kapazität schnell und dynamisch erweitern und schnell zurücksetzen, was wirklich praktisch ist. Das Plugin „Docker-Maven-Plugin“ soll uns dabei helfen, automatisch Bilder zu generieren und sie durch einfache Konfiguration in Maven-Projekten in das Lager zu übertragen. 2. Umgebung und SoftwarevorbereitungIn dieser Demonstrationsumgebung habe ich auf meinem lokalen Mac OX gearbeitet. Im Folgenden sind die installierte Software und Versionen aufgeführt:
Hinweis: Hier möchten wir das Java Maven-Projekt testen und dabei das Docker-Maven-Plugin verwenden, um Bilder zu erstellen, Bilder hochzuladen und andere Vorgänge auszuführen. Sie müssen also zuerst Docker, Maven und Java installieren. Der Installationsvorgang wird hier ignoriert. 3. Demo-Beispiel3.1 DOCKER_HOST konfigurierenDie Standardverbindungsadresse des Docker-Maven-Plugin-Plugins zum lokalen Docker lautet localhost:2375, daher müssen wir zuerst die Umgebungsvariablen festlegen. DOCKER_HOST=tcp://<host>:2375 Hinweis: Wenn die Umgebungsvariable DOCKER_HOST nicht festgelegt ist, können Sie DOCKER_HOST in der Befehlszeile angeben, um sie auszuführen. Beispielsweise gebe ich DOCKER_HOST auf meinem lokalen Computer an: DOCKER_HOST=unix:///var/run/docker.sock mvn clean install docker:build. 3.2 Beispiel für die Erstellung eines Images Es gibt zwei Möglichkeiten, ein Image zu erstellen. Die erste besteht darin, die Build-Informationen in POM anzugeben, und die zweite besteht darin, zum Erstellen eine vorhandene Docker-Datei zu verwenden. Hier verwenden wir zur Demonstration ein Java Maven-Projekt (mavendemo). 3.2.1 Build-Informationen zum Erstellen in POM angeben <Bauen> <Plugins> <Plugin> <groupId>com.spotify</groupId> <artifactId>Docker-Maven-Plugin</artifactId> <version>1.0.0</version> <Konfiguration> <imageName>mavendemo</imageName> <baseImage>java</baseImage> <maintainer>docker_maven [email protected]</maintainer> <Arbeitsverzeichnis>/ROOT</Arbeitsverzeichnis> <cmd>["java", "-version"]</cmd> <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint> <!-- Hier ist die Konfiguration zum Kopieren des JAR-Pakets in das angegebene Verzeichnis des Docker-Containers--> <Ressourcen> <Ressource> <Zielpfad>/ROOT</Zielpfad> <Verzeichnis>${project.build.directory}</Verzeichnis> <include>${project.build.finalName}.jar</include> </Ressource> </Ressourcen> </Konfiguration> </plugin> </plugins> </bauen> 3.2.2 Erstellen mit Dockerfile pom.xml-Konfiguration <Bauen> <Plugins> <Plugin> <groupId>com.spotify</groupId> <artifactId>Docker-Maven-Plugin</artifactId> <version>1.0.0</version> <Konfiguration> <imageName>mavendemo</imageName> <dockerDirectory>${basedir}/docker</dockerDirectory> <!-- Geben Sie den Dockerfile-Pfad an --> <!-- Hier wird das JAR-Paket in die angegebene Verzeichniskonfiguration des Docker-Containers kopiert, es kann auch in die Dokoker-Datei geschrieben werden--> <Ressourcen> <Ressource> <Zielpfad>/ROOT</Zielpfad> <Verzeichnis>${project.build.directory}</Verzeichnis> <include>${project.build.finalName}.jar</include> </Ressource> </Ressourcen> </Konfiguration> </plugin> </plugins> </bauen> ${basedir}/docker/Dockerfile-Konfiguration VON Java WARTUNGSPERSÖNLICH docker_maven [email protected] ARBEITSVERZEICHNIS /ROOT CMD ["java", "-version"] EINSTIEGSPUNKT ["java", "-jar", "${project.build.finalName}.jar"] Die beiden oben genannten Methoden zum Ausführen von docker:build haben den gleichen Effekt. Der Ausführungsausgabeprozess ist wie folgt:
Verwenden Sie nach Abschluss der Ausführung Docker-Images, um das generierte Image anzuzeigen:
3.3 Ausführen von Befehlenmvn clean package docker:build führt nur den Build-Vorgang aus mvn clean package docker:build -DpushImage führt den Build aus und pusht das Image nach Abschluss mvn clean package docker:build -DpushImageTag führt den Build aus und pusht das Image des angegebenen Tags Hinweis: Hier muss mindestens ein ImageTag angegeben werden, der im POM konfiguriert oder auf der Kommandozeile angegeben werden kann. Die Befehlszeile wird wie folgt angegeben: mvn clean package docker:build -DpushImageTags -DdockerImageTags=imageTag_1 -DdockerImageTags=imageTag_2, und die in der POM-Datei angegebene Konfiguration lautet wie folgt: <Bauen> <Plugins> ... <Plugin> <Konfiguration> ... <BildTags> <imageTag>imageTag_1</imageTag> <imageTag>imageTag_2</imageTag> </imageTags> </Konfiguration> </plugin> ... </plugins> </bauen> 3.4 Docker-Befehle an Maven-Stages bindenWir können Docker-Befehle an verschiedene Maven-Phasen binden. Wir können Docker in Build, Tag und Push unterteilen und sie dann jeweils an die Paket- und Bereitstellungsphasen von Maven binden. Zu diesem Zeitpunkt müssen wir nur mvn deploy ausführen, um die gesamten Build-, Tag- und Push-Vorgänge abzuschließen. Wenn wir mvn build ausführen, werden nur die Build- und Tag-Vorgänge abgeschlossen. Wenn wir bestimmte Schritte überspringen oder nur einen bestimmten Schritt ausführen möchten, müssen wir die POM-Datei nicht ändern, sondern nur angeben, dass ein bestimmter Docker-Schritt übersprungen werden soll. Wenn beispielsweise in unserem Projekt bereits die Automatisierungsvorlage konfiguriert ist, wir dieses Mal aber nur das Image für den lokalen Selbsttest erstellen müssen und die Push-Phase nicht ausführen möchten, müssen wir den Parameter -DskipDockerPush angeben, um den Push-Vorgang zu überspringen. <Bauen> <Plugins> <Plugin> <groupId>com.spotify</groupId> <artifactId>Docker-Maven-Plugin</artifactId> <version>1.0.0</version> <Konfiguration> <imageName>mavendemo</imageName> <baseImage>java</baseImage> <maintainer>docker_maven [email protected]</maintainer> <Arbeitsverzeichnis>/ROOT</Arbeitsverzeichnis> <cmd>["java", "-version"]</cmd> <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint> <Ressourcen> <Ressource> <Zielpfad>/ROOT</Zielpfad> <Verzeichnis>${project.build.directory}</Verzeichnis> <include>${project.build.finalName}.jar</include> </Ressource> </Ressourcen> </Konfiguration> <Hinrichtungen> <Ausführung> <id>Bild erstellen</id> <phase>Paket</phase> <Ziele> <goal>bauen</goal> </Ziele> </Ausführung> <Ausführung> <id>Tag-Bild</id> <phase>Paket</phase> <Ziele> <goal>Tag</goal> </Ziele> <Konfiguration> <image>mavendemo:latest</image> <neuerName>docker.io/wanyang3/mavendemo:${project.version}</neuerName> </Konfiguration> </Ausführung> <Ausführung> <id>Push-Bild</id> <phase>Bereitstellen</phase> <Ziele> <goal>drücken</goal> </Ziele> <Konfiguration> <imageName>docker.io/wanyang3/mavendemo:${project.version}</imageName> </Konfiguration> </Ausführung> </Ausführungen> </plugin> </plugins> </bauen> Wenn wir im obigen Beispiel ein MVN-Paket ausführen, werden die Build- und Tag-Operationen ausgeführt, und wenn wir ein MVN-Bereitstellungspaket ausführen, werden die Build-, Tag- und Push-Operationen ausgeführt. Wenn wir einen Docker-Prozess überspringen möchten, müssen wir nur Folgendes tun:
Wenn wir beispielsweise den Tag-Prozess beim Ausführen des Pakets überspringen möchten, benötigen wir mvn package -DskipDockerTag. 3.5 Verwenden einer privaten Docker-Repository-AdresseIn der tatsächlichen Arbeitsumgebung müssen wir das Image in unser privates Docker-Repository übertragen. Dies ist auch mit dem Plug-In „docker-maven-plugin“ sehr einfach zu erreichen. Es gibt mehrere Möglichkeiten, dies zu erreichen: 1. Ändern Sie den ImageName-Vorgang der POM-Datei ... <Konfiguration> <imageName>registry.example.com/wanyang3/mavendemo:v1.0.0</imageName> ... </Konfiguration> ... 2. Ändern Sie den Vorgang newName in der POM-Datei ... <Konfiguration> <imageName>mavendemo</imageName> ... </Konfiguration> <Ausführung> <id>Tag-Bild</id> <phase>Paket</phase> <Ziele> <goal>Tag</goal> </Ziele> <Konfiguration> <image>mavendemo</image> <neuerName>registry.example.com/wanyang3/mavendemo:v1.0.0</neuerName> </Konfiguration> </Ausführung> ... 3.6 SicherheitsauthentifizierungskonfigurationWenn wir Bilder in ein Docker-Repository übertragen, unabhängig davon, ob es gemeinsam genutzt oder privat ist, ist häufig eine Sicherheitsauthentifizierung erforderlich und Vorgänge können erst nach Abschluss der Anmeldung ausgeführt werden. Natürlich können wir uns über die Befehlszeile „docker login -u user_name -p password docker_registry_host“ anmelden, aber für automatisierte Prozesse ist das nicht sehr praktisch. Mit dem Plugin „Docker-Maven-Plugin“ können wir ganz einfach eine Sicherheitsauthentifizierung implementieren. Fügen Sie zunächst die relevante Serverkonfiguration zur Maven-Konfigurationsdatei setting.xml hinzu und konfigurieren Sie dabei hauptsächlich die Benutzerauthentifizierungsinformationen der Docker-Registrierung. <Server> <Server> <id>meine-Docker-Registrierung</id> <Benutzername>wanyang3</Benutzername> <Passwort>12345678</Passwort> <Konfiguration> <email>[email protected]</email> </Konfiguration> </server> </server> Verwenden Sie dann einfach die Server-ID in pom.xml. <Plugin> <Plugin> <groupId>com.spotify</groupId> <artifactId>Docker-Maven-Plugin</artifactId> <version>1.0.0</version> <Konfiguration> <imageName>registry.example.com/wanyang3/mavendemo:v1.0.0</imageName> ... <serverId>meine-Docker-Registrierung</serverId> </Konfiguration> </plugin> </plugins> 3.7 Andere Parameter Das Plugin docker-maven-plugin bietet ebenfalls viele nützliche Konfigurationsmöglichkeiten. Hier sind einige Parameter.
4. Häufig gestellte Fragen1. Beim Ausführen von Build-Images tritt Fehler 1 auf:
Dies liegt daran, dass der Docker-Dienst nicht gestartet ist. Starten Sie einfach Docker. 2. Beim Ausführen von Build-Images wird Fehler 2 gemeldet:
Dies liegt daran, dass der Image-Name falsch ist. Der Docker-Image-Name muss mit [a-z0-9-_.] übereinstimmen. Dies ist das Ende dieses Artikels über das Verpacken von Docker-Maven-Plugin-Images und deren Hochladen in private Repositories. Weitere Informationen zum Verpacken von Docker-Maven-Plugin-Images 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:
|
>>: Beispielcode für nahtloses Scrollen mit Flex-Layout
Inhaltsverzeichnis Hintergrund Zweck Vor der Spal...
1. Installieren Sie ffmpeg unter Centos Linux 1. ...
In diesem Artikelbeispiel wird der spezifische Ja...
1. Übersicht Redis Cluster ermöglicht hohe Verfüg...
Inhaltsverzeichnis Was ist ein Index Der Untersch...
Problembeschreibung MySQL wurde erfolgreich gesta...
In diesem Artikel wird der spezifische JS-Code zu...
Als Nächstes erfahren Sie, wie Sie die Serverleis...
NERDTree ist ein Dateisystembrowser für Vim. Mit ...
1. Laden Sie die VirtualBox-Software herunter und...
Ich habe bereits einen Artikel über mobile Anpass...
MySQL wird in eine Installationsversion und eine ...
Vorwort In Bezug auf die Verwendung von MySQL-Ind...
Überprüfen Sie, ob MySQL bereits unter Linux inst...
Im vorherigen Artikel wurde erläutert, wie Sie mi...