Cet article présente la méthode d'utilisation du plug-in Maven pour créer des images Docker. Je vais le partager avec vous. Les détails sont les suivants:
outil
Si vous voulez faire du bon travail, vous devez d'abord affiner vos outils. Après la recherche, les plug-ins de Docker Maven suivants sont entrés dans mon domaine de vision:
| Nom du plugin | Adresse officielle |
|---|---|
| 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 |
L'auteur a choisi le premier de trois dimensions: étoiles, facilité d'utilisation et fréquence de mise à jour du document.
Créer des images Docker avec des plugins
Utilisation simple
Prenons le projet précédent: Microservice-Discovery-Eureka comme exemple:
Ajouter le paragraphe suivant dans pom.xml
<Duild> <Glugins> <! - Docker's Maven Plugin, site Web officiel: https://github.com/spotify/docker-maven-plugin -> <Glugin> <ProupId> com.spotify </rom groupe> <ArtefactId> Docker-Maven-Plugin </tatifactid> <version> 0.4.12 </3 RELALAGE [A-Z0-9-_. <EntryPoint> ["java", "-jar", "/ $ {project.build.finalname} .jar"] </ntrypoint> <sessherse> <ourcecE> <TargetPath> / </ TargetPath> <Ar répertoire> $ {project.build.directory} </nupertory> <clut> {project.build.finalname} .jar. </FIGIGURATION> </ Plugin> </ Plugins> </ Build> Exécuter la commande:
Docker du package MVN Clean: Build
Nous constaterons que la console a quelque chose comme ce qui suit:
[Info] Building Image Microservice-Discovery-eurekastep 1: De Javapulling de la bibliothèque / javadigest: sha256: 581a4afcbbedd8fdf194d597cb5106c1f91463024fb3a49a2d9f025165eb675fstatue: téléchargement de nouveau ---> EA40C858F006STEP 2: Add /microservice-Discovery-eureka-0.0.1-Snapshot.jar // ---> D1C174083BCareMoving Intermediate Container 91913D847C20STEP 3: EntryPoint Java -Jar-Jar /microservice-discovery-eureka-0.0.1-snapshot.jar ---> exécuté dans 0f2aeccdfd46 ---> d57b027ca65aaremoving intermédiaire 0f2aeccdfd46Suc avec discovery a construit Micosévice-disewerk [info] ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Félicitations, la construction a réussi.
Nous exécutons des images Docker et constatons que l'image a été construite avec succès:
Repository Tag Image ID créé sizemicroservice-discovery-eureka dernier d57b027ca65a il y a environ une minute 681,5 mb
Démarrer le miroir
Docker Run -P 8761: 8761 Microservice-Discovery-Eureka
Nous constaterons que l'image Docker commencera très rapidement.
Test d'accès
Visitez http: // docker host ip: 8761 pour voir l'interface eureka normalement.
Construire avec dockerfile
La méthode ci-dessus est le moyen le plus simple. Plusieurs fois, nous devons encore le construire avec l'aide de Dockerfile. Tout d'abord, nous créons le fichier dockerfile dans le répertoire / microservice-discovery-eureka / src / main / docker.
De Java: 8Volume / tmpadd microservice-discovery-eureka-0.0.1-snapshot.jar app.jarrun bash -c 'touch /app.jar'expose 9000entrypoint ["java", "- dujava.security.egd = fichier: / dev /./ Urandom", "- jar", ""] "]
Modifier pom.xml
<Duild> <Glugins> <! - Docker's Maven Plugin, site Web officiel: https://github.com/spotify/docker-maven-plugin -> <Glugin> <ProupId> com.spotify </rom groupe> <ArtefactId> Docker-Maven-Plugin </tatifactid> <version> 0.4.12 </3 RELALING [A-Z0-9-_.], Sinon, la construction ne réussira pas -> <! - Voir: https://github.com/spotify/docker-maven-plugin invalide Repository Nom ... Uniquement [A-Z0-9-_.] est autorisé -> <imagename> Microservice-Discowe-Dockerfile </agnofame> <! est situé -> <dockerDirectory> $ {project.basedir} / src / main / docker </ dockerDirectory> <sessherse> <ourcecE> <BargetPath> / </ TargetPath> <Affinet> $ {project.build.Directory} </ Directory> <clut> $ {project.build.finalname}. </gingin> </granins> </ build>Les autres étapes sont les mêmes. De cette façon, vous pouvez utiliser DockerFile pour créer des images Docker.
Push Docker Image sur DockerHub
Modifiez d'abord les paramètres du fichier de configuration global de Maven et ajoutez le paragraphe suivant
<Servers> <Server> <id> docker-hub </id> <wamname> Votre dockerhub username </sername> <password> Votre mot de passe dockerhub </ mot de passe> </ Configuration> <mail> Votre boîte aux lettres Dockerhub </-email> </FIGIGRUGE> </ Server> </servers>
Créer un repo sur dockerhub
Le projet pom.xml est modifié sur les éléments suivants: Notez que le chemin d'imagename doit être cohérent avec le chemin du repo
<Duild> <Glugins> <! - Docker's Maven Plugin, site Web officiel: https://github.com/spotify/docker-maven-plugin -> <Glugin> <ProupId> com.spotify </rom groupe> <ArtefactId> Docker-Maven-Plugin </tatifactid> <version> 0.4.12 </3 RECLALING [A-Z0-9-_. <ImageName> EACDY / TEST </ ImageName> <! - Spécifiez le chemin où se trouve le dockerfile -> <dockerDirectory> $ {project.basedir} / src / main / docker </ dockerDirectory> <sessherse> <esource> <TargetPath> / </ TargetPath> <Directory> $ {project.build.Directory} <clut> $ {project.build.FinalName} .jar </clure> </ ressource> </sessherie> <! - Les deux lignes suivantes sont utilisées pour Docker Push to DockerHub. -> <streverId> docker-hub </sternId> <gistrerl> https://index.docker.io/v1/ </ registryUrl> </ Configuration> </ plugin> </ plugins> </ build> Exécuter la commande:
package MVN Clean Docker: build -dpushimage
Une fois la construction réussie, nous constatons que l'image Docker a été poussée à Dockerhub.
Poussez l'image vers un référentiel privé
Dans de nombreux scénarios, nous devons pousser le miroir vers un référentiel privé. Afin d'expliquer l'exhaustivité, le référentiel privé utilise un référentiel privé qui configure l'authentification de la connexion.
Tout comme la poussée vers DockerHub, nous devons d'abord modifier les paramètres du fichier de configuration global de Maven et ajouter le paragraphe suivant
<Servers> <Server> <Id> docker-registry </id> <wamname> Votre dockerhub username </ username> <mot de passe> Votre mot de passe dockerhub </ mot de passe> </ Configuration> <mail> Votre boîte aux lettres DockerHub </-email> </FIGIGRUPAGE> </ Server> </ serveurs>
Changez le pom.xml du projet en ce qui suit,
<Glugin> <ProupId> com.spotify </proupId> <Artifactid> docker-maven-Plugin </ artifactId> <DERNÉRATION> 0.4.12 </ version> <fracential> <! - Le chemin est: Adresse du référentiel privé / le chemin du miroir que vous voulez -> <imagename> reg.itmuch.com/test-pull-gistry </magename> <DockerDirectory> $ {project.basedir} / src / main / docker </ dockerDirectory> <Sessiers> <ourcecE> <BargetPath> / </ TargetPath> <Charytory> $ {project.build.directory} </ Directory> <clut> $ {project.build.FinalName}. avec Maven Configuration File Settings.xml -> <ServerId> Docker-Registry </SverId> </FIGIFICURATION> </ Plugin> mettre en œuvre:
package MVN Clean Docker: build -dpushimage
Attendez un instant et vous réussirez.
Si vous souhaitez télécharger l'image depuis le serveur privé, exécutez:
Docker Login Reg.itmuch.com # Ensuite, entrez le numéro de compte et le mot de passe Docker Pull Reg.itmuch.com/test-pull-gistry
Lier le plugin à exécuter en phase
Dans de nombreux scénarios, nous avons de tels besoins, par exemple, lors de l'exécution du package MVN Clean, nous créerons automatiquement une image Docker pour nous. Est-ce que ça va? La réponse est oui. Nous avons juste besoin de lier l'objectif du plugin à une certaine phase.
La soi-disant phase et l'objectif peuvent être compris comme suit: Le format de commande Maven est: MVN Phase: objectif, par exemple, mvn package docker: build, puis, package et docker sont les deux phases, et la construction est l'objectif.
Voici un exemple:
Configurez d'abord les propriétés:
<properties> <docker.image.prefix> reg.itmuch.com </docker.image.prefix> </properties>
Configuration du plugin:
<Duild> <Glugins> <Glugin> <ProupId> com.spotify </proupId> <ArtifactId> Docker-Maven-Plugin </ ArtifactId> <Executions> <CecUtion> <Id> Build-Image </id> </ Execution> </ingution> </ EXUMUTION> <ImageName> $ {docker.image.prefix} / $ {project.artifactid} </ ImageName> <BaseMage> Java </baseMage> <EntryPoint> ["java", "-jar", "/ $ {project.build.FinalName} .jar"] </ntrypoint> <esource <Arnutory> $ {project.build.directory} </ Directory> <clut> $ {project.build.finalname} .jar </cluent> </source> </ ressources> </ configuration> </ plugin> </glugins> </ build>Comme ci-dessus, nous avons juste besoin d'ajouter:
<Cecultes> <exécution> <id> build-image </id> <masy> package </ phase> <pose> <but> build </ but> </ buts> </écution> </ exécutions>
Fais-le c'est tout. Cet exemple fait référence à la cible de construction de Docker, lié à la phase de package. En d'autres termes, l'utilisateur doit uniquement exécuter le package MVN et exécuter automatiquement MVN Docker: build.
Exceptions courantes
Impossible de se connecter à 2375 (généralement sur Win7)
La copie de code est la suivante:
Connectez-vous à LocalHost: 2375 [LocalHost / 127.0.0.1, LocalHost / 0: 0: 0: 0: 0: 0: 0: 0: 1] Échec: Connexion refusée: Connect -> [Aide 1]
Étapes de la solution:
Entrez Docker-Machine Env
$ Env: docker_tls_verify = "1" $ env: docker_host = "tcp: //192.168.99.100: 2376" $ env: docker_cert_path = "c: /users/administrator/.docker/machine/machines/default
Ajouter une configuration pour les plugins
<! - L'une des façons de résoudre le problème de la connexion à LocalHost: 2375, assurez-vous d'être cohérent avec Docker-Machine Env--> <DockerHost> https://192.168.99.100:2376 </cockerhost> <DockerCertPath> c: /users/administrator/.docker/machine/machines/default </ dockertertpath>
Après modification, la configuration du plug-in devient:
<Glugin> <ProupId> com.spotify </prôdId> <Artifactid> docker-maven-Plugin </letefactId> <DERVIÈRE> 0.4.12 </DERNIFRIGRATION> <FIFIGIGURATION> <IMAMENAME> EACDY / TEST </ ImageName> <DockerDirectory> $ {project.basedir} / src / Mainvy / docker </dickerDirctory> <! Problème de connexion à LocalHost: 2375, assurez-vous d'être cohérent avec Docker-Machine Env -> <DockingHost> https://192.168.99.100:2376 </ dockerhost> <DockerCertPath> c: /Users/administrator/.docker/Machine/Machines/Default </Dockertertpath> <Resource> <Resource> <CargetPath> / </ TargetPath> <Arnutory> $ {project.build.directory} </ Directory> <clut> $ {project.build.FinalName} .jar </clure> </ ressource> </ Resources> <! - Les deux lignes suivantes sont utilisées pour Docker Push pour dockerhub. -> <streverId> docker-hub </sternId> <gegryUrl> https://index.docker.io/v1/ </ registryUrl> </ Configuration> </ Plugin> Référence: https://github.com/spotify/docker-maven-plugin/issues/116
CONSEILS
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.