In diesem Artikel wird die Methode zur Verwendung des Maven-Plug-Ins vorgestellt, um Docker-Bilder zu erstellen. Ich werde es mit Ihnen teilen. Die Details sind wie folgt:
Werkzeug
Wenn Sie gute Arbeit leisten möchten, müssen Sie zuerst Ihre Werkzeuge schärfen. Nach der Forschung haben die folgenden Docker Maven-Plug-Ins in mein Sichtfeld eingegeben:
| Plugin -Name | Offizielle Adresse |
|---|---|
| Docker-Maven-Plugin | https://github.com/spotify/docker-maven-plugin |
| Docker-Maven-Plugin | https://github.com/fabric8io/docker-maven-plugin |
| Docker-Maven-Plugin | https://github.com/bibryam/docker-maven-plugin |
Der Autor wählte den ersten aus drei Dimensionen aus: Sterne, Dokumentfreundlichkeit und Aktualisierungsfrequenz.
Erstellen Sie Docker -Bilder mit Plugins
Einfache Verwendung
Nehmen wir das vorherige Projekt: Microservice-Discovery-Eureka als Beispiel:
Fügen Sie den folgenden Absatz in pom.xml hinzu
<build> <plugins> <!-- docker's maven plugin, official website: https://github.com/spotify/docker-maven-plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.12</version> <configuration> <!-- Note that imageName must comply with the Regular [a-z0-9-_], ansonsten ist der Build nicht erfolgreich-> <!-siehe: https://github.com/spotify/docker-maven-plugin Invalte Repository-Name ... nur [a-z0-9-_.] sind erlaubt-> <basis <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resources> </configuration> </plugin> </plugins> </build> Führen Sie den Befehl aus:
MVN Clean Package Docker: Build
Wir werden feststellen, dass die Konsole so etwas wie Folgendes hat:
[INFO] Building image microservice-discovery-eurekaStep 1 : FROM javaPulling from library/javaDigest: sha256:581a4afcbbedd8fdf194d597cb5106c1f91463024fb3a49a2d9f025165eb675fStatus: Downloaded newer image for java:latest ---> ea40c858f006Step 2: add /microService-discovery-eureka-0.0.1-snapshot.jar // ---> D1C174083BCAREMOPING Intermediate Container 91913d847c20step 3: Einstiegspunkt JAVA-JAVA-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR-JAR- /MicroService-Discovery-Eureka-0.0.1-Snapshot.jar ---> In 0F2Aeccdfd46 ---> D57B027CA65Aremoving Intermediate Container 0F2Aeccdfd46Successitious D57B027CA65A [Info] [Info] Infoca. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Herzlichen Glückwunsch, der Bau war erfolgreich.
Wir führen Docker -Bilder aus und stellen fest, dass das Bild erfolgreich erstellt wurde:
Repository-Tag-Bild-ID erstellt SizemicroService-Discovery-Eureka Neueste D57B027CA65A vor ungefähr einer Minute 681,5 MB
Starten Sie den Spiegel
Docker Run -P 8761: 8761 Microservice-Discovery-Eureka
Wir werden feststellen, dass das Docker -Bild sehr schnell beginnt.
Zugangstest
Besuchen Sie http: // docker host ip: 8761, um die Eureka -Schnittstelle normal zu sehen.
Bauen Sie mit Dockerfile
Die obige Methode ist der einfachste Weg. Oft müssen wir es mit Hilfe von Dockerfile noch bauen. Zunächst erstellen wir die Datei dockerfile im Verzeichnis/microservice-Discovery-Eureka/src/main/docker.
Aus Java: 8volume/tmpadd microservice-discovery-Eureka-0.0.1-snapshot.jar App.jarrun Bash -c 'touch /app.jar'expose 9000Entrypoint ["Java", "-Djava.security.Egd = Datei:/Dev/Dev/Dev/.
Modifizieren Sie pom.xml
<build> <plugins> <!-- docker's maven plugin, official website: https://github.com/spotify/docker-maven-plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.12</version> <configuration> <!-- Note that imageName must comply with the Regular [a-z0-9-_], ansonsten ist der Build nicht erfolgreich-> <!-siehe: https://github.com/spotify/docker-maven-plugin Invalid Repository Name ... nur [a-z0-9-_. lokalisiert-> <dockerDirectory> $ {project.basedir}/src/main/docker </dockerDirectory> <ressourcen> <ressourcen> <dargetPath>/</targetPath> <DirecteRory> $ {project.build.directory} </dirised> <Clycontory> $ {project.build.build.fuild.fuild.finame}. </plugin> </plugins> </bauen>Die anderen Schritte sind gleich. Auf diese Weise können Sie Dockerfile verwenden, um Docker -Bilder zu erstellen.
Drücken Sie das Docker -Bild auf DockerHub
Ändern Sie zuerst die globalen Konfigurationsdateieinstellungen von Maven von Maven und fügen Sie den folgenden Absatz hinzu
<Servers> <vers <servers> <ID> Docker-Hub </id> <Bendame> Ihr DockerHub-Benutzername </usustername> <Kennwort> Ihr DockerHub-Kennwort </passward> <configuration> <Email> Ihr DockerHub-Mailbox </mail
Erstellen Sie ein Repo auf DockerHub
Das Projekt pom.xml wird folgendermaßen modifiziert: Beachten Sie, dass der Pfad des Bildname mit dem Pfad des Repo übereinstimmt
<build> <plugins> <!-- docker's maven plugin, official website: https://github.com/spotify/docker-maven-plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.12</version> <configuration> <!-- Note that imageName must comply with the Regular [a-z0-9-_], ansonsten ist der Build nicht erfolgreich-> <!-siehe: https://github.com/spotify/docker-maven-plugin Invalid Repository Name ... nur [a-z0-9-_] sind erlaubt-> <! <IMAMALENAME> EACDY/TEST </imaginame> <!-Geben Sie den Pfad an, in dem sich die DockerFile befindet-> <dockerDirectory> $ {project.basedir}/src/main/docker </docerDirectory> <ressourcen> <ressourcen> <targetPath>/</</dirctionPhinary> $ {project.build.build.build.build.build.build.build.build.build.build.build.build.build.build.build.build.Build.Build.Build.Build.Build.Build.Directory} <Clycess> $ {project.build.FinalName} .jar </include> </ressourcen> </ressourcen> <! -> <serverid> docker-hub </serverid> <registryurl> https://index.docker.io/v1/ </registryurl> </configuration> </plugin> </plugins> </build> Führen Sie den Befehl aus:
MVN Clean Package Docker: Build -dpushimage
Nachdem die Konstruktion erfolgreich ist, werden wir feststellen, dass das Docker -Bild nach Dockerhub gedrängt wurde.
Drücken Sie das Bild in ein privates Repository
In vielen Szenarien müssen wir den Spiegel in ein privates Repository schieben. Um die Vollständigkeit zu erläutern, verwendet das private Repository ein privates Repository, das die Anmeldungsauthentifizierung konfiguriert.
Genau wie bei DockerHub müssen wir zunächst die globalen Konfigurationsdateieinstellungen von Maven ändern und den folgenden Absatz hinzufügen
<Servers> <vers> <ID> Docker-Registry </id> <Bervername> Ihr DockerHub-Benutzername </userername> <kennwort> Ihr DockerHub-Kennwort </passward> <configuration> <EMAIMMER> Ihr DockerHub-Mailbox </mail
Ändern Sie die POM.xml des Projekts in Folgendes,
<plugin> <gruppe> com.spotify </GroupId> <artifactId> Docker-maven-plugin </artifactId> <version> 0.4.12 </Version> <configuration> <! <docerDirectory> $ {project.basedir}/src/main/docker </dockerDirectory> <ressourcen> <ressourcen> <dargetPaths>/</targetPath> <Directory> $ {project.build.directory} </diriens> <include $ {project.build.finalname}. maven-Konfigurationsdateieinstellungen.xml-> <serverid> Docker-Registry </serverid> </configuration> </plugin> implementieren:
MVN Clean Package Docker: Build -dpushimage
Warten Sie einen Moment und Sie werden erfolgreich sein.
Wenn Sie das Bild vom privaten Server herunterladen möchten, führen Sie aus:
Docker Login Reg.itmuch.com # Geben Sie dann die Kontonummer und das Passwort Docker Pull Reg.itmuch.com/test-pull-registry ein
Binden Sie das Plugin so, dass sie in einer Phase ausgeführt werden
In vielen Szenarien haben wir beispielsweise solche Anforderungen, beispielsweise bei der Ausführung von MVN Clean Package werden wir automatisch ein Docker -Image für uns erstellen. Ist es in Ordnung? Die Antwort lautet ja. Wir müssen nur das Ziel des Plugins an eine bestimmte Phase binden.
Die sogenannte Phase und das Ziel können wie folgt verstanden werden: Das Maven-Befehlsformat lautet: MVN-Phase: Ziel, zum Beispiel MVN-Paket-Docker: Build, dann sind Paket und Docker beide Phasen und Build ist Ziel.
Hier ist ein Beispiel:
Konfigurieren Sie zuerst die Eigenschaften:
<Properties> <docker.image.prefix> reg.itmuch.com </docker.image.prefix> </properties>
Plugin -Konfiguration:
<build> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <executions> <execution> <id>build-image</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </execution> </execution> </configuration> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <baseImage>java</baseImage> <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <resources> <resource> <targetPath>/</targetPath> <Directory> $ {project.build.directory} </directory> <closas> $ {project.build.finalName} .jar </include> </ressourcen> </ressourcen> </configuration> </plugin> </plugins> </build>Wie oben müssen wir nur hinzufügen:
<Leacutions> <ausführung> <ID> Build-Image </id> <phase> Paket </Phase> <grosss> <giels> Build </Ziel> </Ziele> </Execution> </Executions>
Tun Sie es einfach. Dieses Beispiel bezieht sich auf das Build -Ziel von Docker, gebunden an die Paketphase. Mit anderen Worten, der Benutzer muss nur ein MVN -Paket ausführen und automatisch MVN Docker: Build ausführen.
Gemeinsame Ausnahmen
Ich kann keine Verbindung zu 2375 herstellen (normalerweise auf Win7)
Die Codekopie lautet wie folgt:
Verbindung zu Localhost: 2375 [localhost/127.0.0.1, localhost/0: 0: 0: 0: 0: 0: 0: 0: 1] Fehlgeschlagen: Verbindung verweigert: Connect -> [Hilfe 1]
Lösungsschritte:
Geben Sie Docker-Machine Env ein
$ Env: docker_tls_verify = "1" $ env: docker_host = "tcp: //192.168.99.100: 2376" $ env: doCKER_CERT_PATH = "C: /Users/administrator
Konfiguration für Plugins hinzufügen
<!-Eine der Möglichkeiten zur Lösung des Problems der Connect to Localhost: 2375, stimmen Sie unbedingt mit Docker-Machine Env--> <dockerhost> https://192.168.99.100:2376 </Dockerhost> <dockerTpat> c: /users/administrator/.docker/.docker/.docker/.docker/.docker/.docker/.docker/Mach.-Machins/Mach.-Machs/Mach.-Machs/.docker/.docker/.
Nach der Änderung wird die Plug-in-Konfiguration:
<plugin> <GroupId> com.spotify </GroupId> <artifactId> docker-maven-plugin </artifactId> <version> 0.4.12 </Version> <Konfiguration> <ImageName> eaccdy/test </bildename> </docerdirectory> {basedir}/src/docerdirectory> <buden}/src/Main/Main/Main/Main/Main/Main/Main/Main/Main/Main. Problem der Verbindung zu Localhost: 2375, stimmen Sie unbedingt mit Docker-Machine env-> <dockkerHost> https://192.168.99.100:2376 </dockerhost> <dockkercertpath> c: /users/administrator/.docker/Machine/Machine/Machine/Machines/Machines/Machines/Machines/Machines/Machines/Machines/Machines/Machines/Machines/Machines/Machines/Machines/Machines/Machines/Machines/Machines/Machines/Machines </users/dokercercerpathes>; <TargetPath>/</targetPath> <Directory> $ {project.build.directory} </directory> <clors> $ {project.build.FinalName} .jar </include> </ressourcen> </ressourcen> <! -> <serverid> docker-hub </serverid> <registryurl> https://index.docker.io/v1/ </registryurl> </configuration> </plugin> Referenz: https://github.com/spotify/docker-maven-plugin/issues/116
Tipps
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.