One for building and pushing
Docker
of the Mirror
Maven
Plug - ins.
Use the Maven
plugin to build the Docker
image, Docker
mirror push
it to the DockerHub
top, or the private warehouse, the previous article is handwritten Dockerfile
, this article with the open source plug-in docker-maven-plugin
operation
The following actions. By default you have read my previous article:
Docker Deployment Springboot Project Integration Redis image do access count demo
Http://www.ymq.io/2018/01/11/Docker-deploy-spring-boot-Integrate-redis
Final effect
Environment preparation
http://www.ymq.io/2018/01/11/Docker-Install-docker-ce/
Plugin Address
Docker-maven-plugin
GitHub Address:https://github.com/spotify/docker-maven-plugin
First, simple use 1. Modify Pom
pom.xml
Add the following paragraph to the
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!--Docker Mave N Plugins, official website: https://github.com/spotify/docker-maven-plugin--<plugin> <GROUPID>COM.SPOTIFY&L T;/groupid> <artifactId>docker-maven-plugin</artifactId> <version>0.4.12</ve Rsion> <configuration> <!--Note that imagename must conform to the regular [a-z0-9-_.] , otherwise the build will not succeed-<!--see: Https://github.com/spotify/docker-maven-plugin Invalid Repository name ... only [A-z0-9-_.] is allowed--> <imageName>microservice-discovery-eureka</imageName> <baseImage>java</baseImage> <entrypoint>["Java", "-jar", "/${project.build.finaln Ame}.jar "]</entrypoint> <rEsources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project. build.finalname}.jar</include> </resource> </resources> < ;/configuration> </plugin> </plugins></build>
2. Build the image
Using the MAVEN command:mvn clean package docker:build
& cd /opt/other-projects/docker-spring-boot-demo-maven-plugin& mvn clean package docker:build
We will find that the console has something like the following:
Results:tests Run:1, failures:0, errors:0, Skipped:0[info] [INFO]---maven-jar-plugin:2.6:jar (default-jar) @ Docker -spring-boot-demo-maven-plugin---[INFO] Building jar:/opt/other-projects/docker-spring-boot-demo-maven-plugin/ Target/docker-spring-boot-demo-maven-plugin-0.0.1-snapshot.jar[info] [INFO]---spring-boot-maven-plugin:1.5.9. Release:repackage (default) @ docker-spring-boot-demo-maven-plugin---[info] [INFO]---docker-maven-plugin:0.4.12: Build (DEFAULT-CLI) @ docker-spring-boot-demo-maven-plugin---[INFO] copying/opt/other-projects/ Docker-spring-boot-demo-maven-plugin/target/docker-spring-boot-demo-maven-plugin-0.0.1-snapshot.jar-/opt/ other-projects/docker-spring-boot-demo-maven-plugin/target/docker/ Docker-spring-boot-demo-maven-plugin-0.0.1-snapshot.jar[info] Building image Docker-spring-boot-demo-maven-pluginstep 1/3: from java---> D23bdf5b1b1bstep 2/3: ADD/ Docker-spring-boot-demo-maven-plugin-0.0.1-snapshot.jar//---> B5d8f92756f2step 3/3: Entrypoint ["Java", "-jar", "/docker-spring-boot-demo-maven-plugin-0.0.1-snapshot.jar"]---> Running in 6867f460b40cremoving Intermediate container 6867f460b40c---> 378fd82432e0progressmessage{id=null, Status=null, Stream=null, Error=null, Progress=null, progressdetail=null}successfully built 378fd82432e0successfully tagged Docker-spring-boot-demo-maven-plugin:latest[info] Built Docker-spring-boot-demo-maven-plugin[info]-------------- ----------------------------------------------------------[INFO] BUILD Success[info]---------------------------- --------------------------------------------[INFO] Total time:20.568 s[info] finished at:2018-01-15t09:21:39+00:00[ INFO] Final memory:37m/89m[info]------------------------------------------------------------------------[email protected]:/opt/other-projects/docker-spring-boot-demo-maven-plugin#
Congratulations, the building was successful.
-We docker images
will find that the image has been successfully built:
& [email protected]:# docker images docker-spring-boot-demo-maven-pluginREPOSITORY TAG IMAGE ID CREATED SIZEdocker-spring-boot-demo-maven-plugin latest 378fd82432e0 3 minutes ago 659MB
3. Boot image
[email protected]:# docker run --name MySpringBootMavenPlugin -d -p 8080:80 docker-spring-boot-demo-maven-plugin84ebb2ebb8c002d3935e6e31c6d2aab05c32c075036368228e84f818d20ded4a
4. View containers
& [email protected]:# docker container ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES84ebb2ebb8c0 docker-spring-boot-demo-maven-plugin "java -jar /docker-s…" About an hour ago Up About an hour 0.0.0.0:8080->80/tcp MySpringBootMavenPlugin
5. Access to services
Browser input: Http://Docker host ip:8080 be able to see the interface, the end of the article at the beginning of the page.
Second, use Dockerfile1. New Dockerfile
Building a docker image using Dockerfile
The approach described above is the simplest way, and many times we still have to build it Dockerfile
,
First we /docker-spring-boot-demo-maven-plugin/src/main/resources
set up the file under the directoryDockerfile
FROM java:8VOLUME /tmpADD docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar app.jarRUN bash -c ‘touch /app.jar‘EXPOSE 9000ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
2. Modifying the POM
pom.xml
the project is modified as follows: Specify Dockerfile
the path
<build> <plugins> <!--the maven plugin for Docker, 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 conform to the regular [a-z0-9-_.] , otherwise the build will not succeed-<!--see: Https://github.com/spotify/docker-maven-plugin Invalid Repository name ... only [A-z0-9-_.] is allowed--> <imageName>docker-spring-boot-demo-maven-plugin</imageName> <!--Specify the path to Dockerfile-<dockerdirectory>${basedir}/src/main/resources</do ckerdirectory> <resources> <resource> <TARGETPA Th>/</targetpath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins></build> ;
3. Build the image
Using the MAVEN command:mvn clean package docker:build
& cd /opt/other-projects/docker-spring-boot-demo-maven-plugin& mvn clean package docker:build
4. Boot image
[email protected]:# docker run --name MySpringBootMavenPlugin -d -p 8080:80 docker-spring-boot-demo-maven-plugin84ebb2ebb8c002d3935e6e31c6d2aab05c32c075036368228e84f818d20ded4a
The other steps are the same as above. You can use it Dockerfile
to build the Docker
image.
5. Access to services
Browser input: Http://Docker host ip:8080 be able to see the interface, the end of the article at the beginning of the page.
Third, push image
Will Docker
Mirror push
to the DockerHub
top
1. Modify MAVEN Configuration
First modify Maven
The global configuration file settings.xml
,
Check settings.xml
your location
[email protected]:# find / -name settings.xml/etc/maven/settings.xml
Add the following paragraph
vi /etc/maven/settings.xml
<servers> <server> <id>docker-hub</id> <username>DockerHub 的账号</username> <password>DockerHub 的密码</password> <configuration> <email>[email protected]</email> </configuration> </server></servers>
2. Create Repository
Registered Account: https://hub.docker.com/
DockerHub
created on the Create Repository
, for example: docker-spring-boot-demo-maven-plugin
, such as
3. Modifying the POM
The project pom.xml
is modified as follows: Note that imageName
the path is consistent with the path to the repo
Image name
<properties> <docker.image.prefix>souyunku</docker.image.prefix></properties>
Will Docker
Mirror push
to the DockerHub
top
<!--3: Push docker image onto Dockerhub--><!--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 conform to the regular [a-z0-9 -_.] , otherwise the build will not succeed-<!--see: Https://github.com/spotify/docker-maven-plugin Invalid Repository name ... only [A-z0-9-_.] is allowed-<!--if you want to push the Docker image to Dockerhub, the path here will be the same as the repo path, and <imagen ame>${docker.image.prefix}/${project.artifactid}</imagename> <!--Specify the path to Dockerfile and <d Ockerdirectory>${basedir}/src/main/resources</dockerdirectory> <resources> <RESOURCE&G T <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include&gT;${project.build.finalname}.jar</include> </resource> </resources> <!--below two The line is used for Docker push to Dockerhub. -<serverId>docker-hub</serverId> <registryurl>https://index.docker.io/v1/</regist Ryurl> </configuration></plugin>
4. Build the image
Using the MAVEN command:mvn clean package docker:build -DpushImage
& cd /opt/other-projects/docker-spring-boot-demo-maven-plugin& mvn clean package docker:build -DpushImage
Seeing data like this proves there's nothing wrong with building a mirror.
[INFO] Building image Souyunku/docker-spring-boot-demo-maven-pluginstep 1/6: from Java:8---> D23bdf5b1b1bstep 2/6: VOLUME/ TMP---> Using cache---> cb237cc84527step 3/6: ADD Docker-spring-boot-demo-maven-plugin-0.0.1-snapshot.jar App.jar---> 7fb5e3363ed5step 4/6: RUN bash-c ' Touch/app.jar '---> Running in ab5d10dd64adremoving Intermediate C Ontainer AB5D10DD64AD---> 05d96fe59da4step 5/6: EXPOSE 9000---> Running in d63e20122d8eremoving Intermediate cont Ainer d63e20122d8e---> 55ba378141fdstep 6/6: entrypoint ["Java", "-djava.security.egd=file:/dev/./urandom", "-jar" , "/app.jar"]---> Running in 962d476363a3removing Intermediate container 962d476363a3---> 654b596fe91fprogressmessage{id=null, Status=null, Stream=null, Error=null, Progress=null, progressDetail=null} Successfully built 654b596fe91fsuccessfully tagged souyunku/docker-spring-boot-demo-maven-plugin:latest[info] built Souyunku/docker-spring-boot-demo-maven-plugin[info] Pushing Souyunku/docKer-spring-boot-demo-maven-pluginthe push refers to Repository [docker.io/souyunku/ Docker-spring-boot-demo-maven-plugin]464800d90790:pushed d52b146f9147:pushed 35c20f26d188:mounted from souyunku/ Docker-spring-boot-demo c3fe59dd9556:mounted from Souyunku/docker-spring-boot-demo 6ed1a81ba5b6:mounted Souyunku/docker-spring-boot-demo a3483ce177ce:mounted from Souyunku/docker-spring-boot-demo ce6c8756685b:mounted From Souyunku/docker-spring-boot-demo 30339f20ced0:mounted from Souyunku/docker-spring-boot-demo 0eb22bfb707d: Mounted from Souyunku/docker-spring-boot-demo a2ae92ffcd29:mounted from Souyunku/docker-spring-boot-demo Latest: Digest:sha256:8d78ced0034f38be8086c8f812817ec4c12b178470b4cea668046906c825c9ee size:2424null:null [INFO]-------- ----------------------------------------------------------------[INFO] BUILD Success[info]---------------------- --------------------------------------------------[INFO] Total time:41.764 s[info] finished at:2018-01-16t09:56:23+ 00:00[info] Final memory:36m/88m[info]------------------------------------------------------------------------[email protected]:/opt/other-projects/docker-spring-boot-demo-maven-plugin#
5. View the image
[email protected]:# docker images souyunku/docker-spring-boot-demo-maven-plugin REPOSITORY TAG IMAGE ID CREATED SIZEsouyunku/docker-spring-boot-demo-maven-plugin latest 654b596fe91f 27 minutes ago 674MB
[email protected]:# docker images souyunku/docker-spring-boot-demo-maven-plugin REPOSITORY TAG IMAGE ID CREATED SIZEsouyunku/docker-spring-boot-demo-maven-plugin latest 654b596fe91f 27 minutes ago 674MB
Docker Hub
View the image and see that it has been uploaded successfully
6. Boot image
[email protected]:# docker run --name MySpringBootMavenPlugin -d -p 8080:80 docker-spring-boot-demo-maven-plugin84ebb2ebb8c002d3935e6e31c6d2aab05c32c075036368228e84f818d20ded4a
The other steps are the same as above. You can use it Dockerfile
to build the Docker
image.
7. Access to services
Browser input: Http://Docker host ip:8080 be able to see the interface, the end of the article at the beginning of the page.
Iv. Binding Phase Execution
Bind a plug-in to a phase execution
In many scenarios, we have this requirement, such as when executing mvn clean package
, to automatically build a Docker image for us, OK? The answer is yes. We just need to bind the plug- goal
in to a certain phase
.
So-called phase
and goal
, as can be understood: the maven
command format is: mvn phase:goal
, for example mvn package docker:build
then, package
and both are docker
phase,build
goal
.
1. Modifying the POM
Here's an example:
First configure the properties:
<properties> <docker.image.prefix>souyunku</docker.image.prefix ></properties>
<plugin> <groupId>com.spotify</groupId> <artifactid>docker-maven-plugin</artifactid > <version>0.4.12</version> <executions> <execution> <id>build-im age</id> <phase>package</phase> <goals> <goal>build< /goal> </goals> </execution> </executions> <configuration> <! -Note that imagename must conform to the regular [a-z0-9-_.] , otherwise the build will not succeed-<!--see: Https://github.com/spotify/docker-maven-plugin Invalid Repository name ... only [A-z0-9-_.] is allowed-<!--if you want to push the Docker image to Dockerhub, the path here will be the same as the repo path, and <imagen ame>${docker.image.prefix}/${project.artifactid}</imagename> <!--Specify the path to Dockerfile and <d Ockerdirectory>${basedir}/src/main/resources</dockerdirectory> <resources> <RESOURCE> <targetPath>/</targetPath> <directory>${project.build.directory}< /directory> <include>${project.build.finalName}.jar</include> </resource> </resources> <!--The following two lines are used for Docker push to Dockerhub. -<serverId>docker-hub</serverId> <registryurl>https://index.docker.io/v1/</regist Ryurl> </configuration></plugin>
New additions
<executions> <execution> <id>build-image</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution></executions>
This example refers to the docke
goal of R build
, which is bound on package
this phase
.
In other words, the user simply executes mvn package
and executes automatically mvn docker:build
.
2. Build the image
Using the MAVEN command:mvn package
& cd /opt/other-projects/docker-spring-boot-demo-maven-plugin& mvn package
3. Boot image
[email protected]:# docker run --name MySpringBootMavenPlugin -d -p 8080:80 docker-spring-boot-demo-maven-plugin84ebb2ebb8c002d3935e6e31c6d2aab05c32c075036368228e84f818d20ded4a
4. Access to Services
Browser input: Http://Docker host ip:8080 be able to see the interface, the end of the article at the beginning of the page.
Recommended reading: Docker Hub warehouse use, and build Docker Registry
http://www.ymq.io/2017/12/31/Docker-dockerHub/
GitHub:d Ocker-spring-boot-demo-maven-plugin
Https://github.com/souyunku/other-projects/tree/master/docker-spring-boot-demo-maven-plugin
Contact
- Peng Lei
- Source: Http://www.ymq.io/2018/01/15/Docker-maven-plugin
- Email:[email protected]
- Copyright belongs to the author, please specify the source of the reprint
- WeChat: Pay attention to the public number, search cloud library, focus on the development of technology research and knowledge sharing
Build Springboot project with Maven plugin, generate Docker image push to Dockerhub