Il y a un article Getting Start sur le site officiel de Spring, qui présente comment utiliser Docker pour publier les applications de démarrage Spring. Il est assez détaillé, mais certains détails ne sont pas mentionnés, et le manuel d'entrée du site officiel se trouve dans la version anglaise. Réorganions et enregistrons-le ici, comme référence pour les amis avec un mauvais anglais, et laissons-vous un mémorandum.
Préparer
Outils et environnement de fonctionnement requis:
Créer un projet
Tout d'abord, vous devez créer un projet Spring Boot. Spring Tool Suite et Intellij Idea sont tous deux avec des plug-ins à créer. Une autre façon consiste à le créer à partir de http://start.spring.io/. Cette méthode est recommandée. Après avoir rempli Group Id et Artifact Id dans le formulaire, cliquez sur le bouton Générer du projet pour le générer et importer le projet téléchargé dans votre IDE préféré.
Modifiez le fichier pom.xml et ajoutez docker-maven-plugin:
<? xml version = "1.0" Encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <ModelVersion> 4.0.0 </ ModelVersion> <GroupId> org.MatrixStudio.Springboot </prolgyd> <ArtifactId> docker </refactId> <version> 0.0.1-snapshot </, version> <packaging> jar </packaging> <name> docker </name> <description> Demo Project for Spring Boot </ Description> <GroupId> org.springframework.boot </prôdId> <ArtifactId> printemps-boot-starter-parent </refactive> <version> 1.5.2.release </DERNIFRES> <RelativePath /> <! - Recherche Parent du Repository -> </pare-parent> <properters> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outputencoding> utf-8 </project.reportting.outputending> <java.version> 1.8 </java.version> <docker.image.prefix> </properties> <Dependces> <Dependency> <ProupId> org.springframework.boot </prôdId> <ArtifActid> printemp-boot-starter-web </ artifactid> </dependency> <dependency> <proupId> org.springframework.boot </proupId> <ArtifActid> Spring-Boot-starter-Tesst </ artifact> <ccope> Test </ Scope> </Dependency> </ Dependues> <Duild> <Glugins> <ProupId> org.springFramework.boot </proupId> <egfactId> Spring-Boot-Maven-Plugin </ Artifactid> </Glugin> <! - Docker Maven Plugin -> <Glun> <ProupId> com.spotify </ GroupId> <ArtefactId> Docker-Maven-Plugin </ Artifactid> <DERNÉRATEUR> 0.4.3 </DERNIFICATION> <FICIFICURATION> <IMAMEName> $ {docker.image.prefix} / $ {project.artifactid} </imageName> <DockerDirectory> Src / Main / docker </DockerDirectory> <Arnutory> $ {project.build.directory} </ Directory> <clut> $ {project.build.FinalName} .jar </rupd> </sessherse> </figuration> </gingin> </glugins> </ build> </ project>Le plugin Docker-Maven-Plugin est utilisé pour construire des projets de démarrage Spring dans Docker Images:
Ouvrez le fichier DockerApplication.java et modifiez-le au contenu suivant:
package org.matrixstudio.springboot; import org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootapplication; import org.springframework.web.bind.annotation.requestmapping; importation; org.springframework.web.bind.annotation.restController; @ SpringbootApplication @ RestControllerPublic Class dockerApplication {@RequestMapping ("/") public String home () {return "Hello docker world"; } public static void main (String [] args) {springApplication.run (dockerapplication.class, args); }} Compiler et courir
Exécutez le projet Spring Boot en exécutant la commande suivante:
Package MVN && java -jar cible / docker-0.0.1-snapshot.jar
Ouvrez le navigateur et entrez http://localhost:8080 . Si "Hello Docker World" apparaît, cela signifie que la course réussit.
Remarque: Lorsque vous exécutez la commande ci-dessus, vous devez télécharger de nombreux packages de dépendance à partir du référentiel Maven officiel. Le réseau intérieur n'est pas stable et la vitesse de téléchargement est lente. Vous pouvez envisager d'utiliser un site miroir fourni par un tiers, comme le référentiel miroir Maven d'Alibaba. Ajoutez la configuration suivante à pom.xml:
<project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <ModelVersion> 4.0.0 </ ModelVersion> <ProupId> org.MatrixStudio.Springboot </prouprid> <Artifactid> docker </tatifactid> <version> 0.0.1-SNAPSHOT <! - De dépendances -> ...... <! - build -> ...... <! - Aliyun Repository -> <ispository> <id> Central </ id> <name> aliyun </name> <url> http://maven.aliyun.com/nexus/content/groups/public/ </url> <endeases> </popository> </ Repository> </ Repository> </ Repository> </ Project>
Projet de conteneurisation
Tout d'abord, assurez-vous que Docker est installé sur votre machine. Si votre Docker est installé sur un serveur Linux, vous devez télécharger le projet de démarrage Spring ci-dessus sur le serveur. Les étapes suivantes supposent que vous opérez sur un environnement Linux.
Créer un dockerfile
Docker utilise un fichier nommé Dockerfile pour spécifier la couche d'image, nous devons donc d'abord créer un fichier Dockerfile et exécuter la commande suivante pour créer le fichier Dockerfile :
sudo tee src / main / docker / dockerfile << - 'eof'from frolvlad / alpine-oraclejdk8: slimvolume / tmpadd docker-0.0.1-snapshot.jar app.jarrun sh -c' touch /app.jar'env java_opts = "" entryPoint ["sh", "-c", "java_opts =" "Entrée [" sh "," -c "," java_opts = " $ Java_opts -djava.security.egd = file: / dev /./ urandom -jar /app.jar "] eof
Expliquons grossièrement la commande ci-dessus:
Construire une image docker
Exécutez la commande suivante pour construire l'image Docker:
Docker du package MVN: build
Une fois la construction terminée, exécutez la commande suivante pour afficher:
images sudo docker
Le résultat est:
Taille de la balise du référentiel
Springio / docker Dernier 7E2BA2F7E81E il y a 2 minutes 195 Mo
Frolvlad / Alpine-Oraclejdk8 Slim 00D8610F052E il y a 4 jours 167 Mb
Vous pouvez voir que l'image que nous avons construite est apparue et l'étape suivante consiste à exécuter l'image.
Exécuter l'image Docker
Exécutez la commande suivante pour exécuter l'image docker construite à l'étape précédente:
Sudo Docker Run -P 8080: 8080 -T Springo / Docker
Si rien de inattendu ne se produit, vous verrez la sortie suivante:
. ____ _ __ _ /// / ___'_ __ _ (_) _ __ __ _ / / / / / / () / ___ | '_ |' _ | / / / `| / / / / / / / / / / / / / / / | | | | | | | | | | | | | | || (_ | |))) .__ || | _ | | _ | | _ | | _ / __, | / / / / / ========================================. DockerApplication V0.0.1-Snapshot sur 00EED53E6928 avec PID 6 (/App.jar Démarré par root in /) 2017-03-08 03: 34: 59.445 Info 6 --- [Main] Omspringboot.DockerApplication: Aucun profil actif Set, redonnant à Default Profiles: Default2017-03-08 03: 34: 552 Infost 6 --- [Main] CationConfigeMedDedWebApplicationContext: Rafraîchissement org.springframework.boot.context.embedded.annotationconfigembeddedwebapplicationcontext@4b9af9a9: date de démarrage [mer mar 08 03:34:59 GMT 2017]; Root of Context Hiérarchy2017-03-08 03: 35: 03.755 Info 6 --- [Main] SBCETTOMCATEMEDDEDSERVletContainer: Tomcat initialisé avec le port (s): 8080 (HTTP) 2017-03-08 03: 35: 03.807 Info 6 --- [Main] O.apache.catalina.Core.Sistand Info 6 --- [Main] O.apache.catalina.Core.Sistand Info 6 --- [Main] O.apache.catalina.Core.Sistand Info 6 --- [Main] O.apache.catalina.Core.Sistand Info 6 --- [Main] O.apache.catalina.Core.Sistands Info 6 --- [Main] O.apache.catalina.Core.Sistands Info 6 --- [Main] o.apache.catalina.Core.Stands Service de démarrage Tomcat2017-03-08 03: 35: 03.821 Info 6 --- [Main] org.apache.catalina.core.standardine: Moteur de servlet de départ: Apache Tomcat / 8.5.112017-03-08 03: 35: 04.042 Info 6 --- [OST-Start-1] OACCC [Tomcat]. Initialisation de Spring Embedded WebApplicationContext2017-03-08 03: 35: 04.043 Info 6 --- [Ost-StartStop-1] Ost-web.Context.ContextLoader: ROOT WEBAPTICATIONCONT: Initialisation terminée dans 4303 MS2017-03-08 03: 35: 04.441 Info 6 --- [OST-StartStop-1] OST-BWServlet.ServletRegistrationBean: Mapping Servlet: 'DispatcherServlet' to [/] 2017-03-08 03: 35: 04.455 Info 6 --- [Ost-StartStop-1] OSBWServlet.FilterRegistrationBean: Mapping Filter: 'CaractorDingFilter' to: [/ *] 2017-03-08 03: 35: 04.457 Info 6 --- [OST-StartStop-1] OSBWServlet.FilterRegistrationBean: Mapping Filter: 'HiddenHttpMethodFilter' to: [/ *] 2017-03-08 03: 35: 04.468 Info 6 --- [Ost-stop-1] OSBWServlet.Filtera: MAMPING-StopSop-1] OSBWServlet.Filtera: MAMPING-StopSop-1] OSBWSERVlet.FilterBeBerBeBleBeBleBleBleBleBleBleBleBe «httpputformContentFilter» à: [/ *] 2017-03-08 03: 35: 04.468 Info 6 --- [Ost-StartStop-1] OSBWServlet.FilterRecgrationBean: Mapping Filter: `` RequestContextFilter 'to: [/ *] 2017-03-08 03: 35: 05.11 swsmmarequestmappinghandleradapter: à la recherche de @ControlleRADVICE: org.springframework.boot.context.embedded.annotationConfigembeddedwebapplicationContext@4b9af9a9: date de démarrage [mer mar 08 03:34:59 GMT 2017]; Root of Context Hiérarchy2017-03-08 03: 35: 05.390 info 6 --- [Main] swsmmarequestmappinghandlermapping: mapted "{[/]}" sur public java.lang.string org.matrixstudio.springboot.dockerapplication.home () 2017-03-08 03: 35: 0202 --- [Main] swsmmarequestmappinghandlermapping: mappé "{[/ error], produit = [text / html]}" sur public org.springframework.web.servlet.modelandView org.springframework.boot.autoconfigure.web.basicerrorcontroller.errorhtml (javax.servlet.http.httpservletRequest, javax.servlet.http.httpservletRequest) 2017-03-08 03: 35: 05.404 Info 6 - [Main] swsmmarequestmappinghandlermapping: mappé "{[/ error]}" sur public org.springframework.http.Responseentity <java.util.map <java.lang.string, java.lang.object >> org.springframework.boot.autoconfigure.web.basicerrorcontroller.error (javax.servlet.http.httservletRequest) 2017-03-08 03: 35: 05.512 info 6 --- [Main] Oswshandler. Handler de type [classe org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-03-08 03: 35: 05.512 info 6 --- [Main] Oswshandler.simpleurllerLermapping: maphed Url Path [/ **] sur le gestionnaire de type [classe org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-03-08 03: 35: 05.639 Info 6 --- [Main] Oswshandler.simpleurlhandlermapping: maphed url chemin [/**/favicon org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-03-08 03: 35: 06.019 Info 6 --- [Main] OsjeaannotationMbeanExporter SBCETTOMCATEMBEDDEDSERVletContainer: Tomcat Démarré sur les ports (s): 8080 (HTTP) 2017-03-08 03: 35: 06.183 Info 6 --- [Main] Omspringboot.DockerApplication: a commencé Dockerapplication en 7.893 secondes (JVM exécution pour 8.743) 2017-03-08 03: 35: 56.728 Info 6 --- [NIO-8080-EXEC-1] OCCC [Tomcat]. [LocalHost]. [/]: Initialisation de Spring FrameworkServlet 'Dispatcherservlet'2017-03-08 03: 35: 56.728 Info 6 --- [Nio-8080-EXEC-1] OSWEB. FrameWorkServlet 'Dispatcherservlet': Initialisation démarrée2017-03-08 03: 35: 56.774 Info 6 --- [Nio-8080-Exec-1] OSWEB.Servlet.DispatcherServlet: FrameWorksservlet 'Dispatterservlet': initialisation terminée dans 43 msExécutez la commande suivante pour afficher le conteneur Docker en cours d'exécution:
sudo docker ps
Vous pouvez voir qu'il y a un conteneur Docker en cours d'exécution:
Commande d'image d'ID de conteneur Créé les ports d'état noms 00EED53E6928 Springio / docker "sh -c 'java $ java ..." il y a environ une minute d'environ une minute 0.0.0.0:8080->8080/tcp fervent_leavitt
Entrez maintenant http: // localhost: 8080 pour voir le résultat "Hello Docker World".
Si vous souhaitez arrêter le conteneur, vous pouvez exécuter la commande suivante:
sudo docker stop 00e
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.