回顾上一章的整个部署过程:

  • 使用"mvn install"进行打包jar
  • 将jar移动到与Dockerfile文件相同的文件夹下
  • 编写Dockerfile文件
  • 使用"docker build -t="zjg/myservice1docker:v1.1" /Users/enniu1/Desktop/docker-data/file"命令进行打包
    • 需要手动指定生成的images的name和tag,以及dockerfile所在的文件夹
  • 之后启动镜像

本章使用docker-maven-plugin实现。

一、Dockerfile:与上一章完全相同

  • 放在了一个单独的文件夹下src/main/docker/

二、pom.xml

引入docker-maven-plugin插件

  1. <plugin>
  2. <groupId>com.spotify</groupId>
  3. <artifactId>docker-maven-plugin</artifactId>
  4. <version>0.4.13</version>
  5. <configuration>
  6. <!-- ${project.artifactId}:即artifactId,myservice1-docker ${project.version}:即version,1.0-SNAPSHOT -->
  7. <imageName>${project.artifactId}:${project.version}</imageName><!-- 镜像名称 -->
  8. <dockerDirectory>${basedir}/src/main/docker</dockerDirectory><!-- Dockerfile文件地址 -->
  9. <resources>
  10. <resource>
  11. <!-- <targetPath>/</targetPath> -->
  12. <!-- ${project.build.directory},项目构建输出目录,默认为target/ -->
  13. <directory>${project.build.directory}</directory>
  14. <!-- ${project.build.directory},打包出来的jar名称,默认为${project.artifactId}-${project.version} -->
  15. <include>${project.build.finalName}.jar</include>
  16. </resource>
  17. </resources>
  18. </configuration>
  19. </plugin>

执行下边的命令后,

  • 将dockerDirectory目录下的内容(这里只有Dockerfile)拷贝到项目的/target/docker/文件夹下(这里就是/target/docker/Dockerfile)
  • 将resource中的include下的文件(这里就是${project.build.finalName}.jar)拷贝到/target/docker/文件夹下(这里就是/target/docker/myservice1-docker-1.0-SNAPSHOT.jar)
    • 经过上述两个拷贝,将jar与Dockerfile拷贝到同一个文件夹下了
  • 之后进行构建过程

三、运行

  1. mvn clean package docker:build

关键日志:

  1. [INFO] --- maven-jar-plugin:2.5:jar (default-jar) @ myservice1-docker ---
  2. [INFO] Building jar: /Users/enniu1/Desktop/project/myservice1-docker/target/myservice1-docker-1.0-SNAPSHOT.jar
  3. [INFO]
  4. [INFO] --- spring-boot-maven-plugin:1.3.0.RELEASE:repackage (default) @ myservice1-docker ---
  5. [INFO]
  6. [INFO] --- docker-maven-plugin:0.4.13:build (default-cli) @ myservice1-docker ---
  7. [INFO] Copying /Users/enniu1/Desktop/project/myservice1-docker/target/myservice1-docker-1.0-SNAPSHOT.jar -> /Users/enniu1/Desktop/project/myservice1-docker/target/docker/myservice1-docker-1.0-SNAPSHOT.jar
  8. [INFO] Copying /Users/enniu1/Desktop/project/myservice1-docker/src/main/docker/Dockerfile -> /Users/enniu1/Desktop/project/myservice1-docker/target/docker/Dockerfile
  9. [INFO] Building image myservice1-docker:1.0-SNAPSHOT
  10. Step 1 : FROM zhaojigang/jdk8:c7_j8
  11. ---> e7b4cf41e531
  12. Step 2 : ADD myservice1-docker-1.0-SNAPSHOT.jar /opt/jar/
  13. ---> 771c895968f6
  14. Removing intermediate container 12392489f5a4
  15. Step 3 : ENV JAVA_HOME /opt/jdk
  16. ---> Running in a81ffe207dfa
  17. ---> 7aded06bc5be
  18. Removing intermediate container a81ffe207dfa
  19. Step 4 : ENV PATH $PATH:$JAVA_HOME/bin
  20. ---> Running in b2598b5eee7c
  21. ---> 5c282af98ab3
  22. Removing intermediate container b2598b5eee7c
  23. Step 5 : CMD java -jar /opt/jar/myservice1-docker-1.0-SNAPSHOT.jar
  24. ---> Running in 51881dd70cd2
  25. ---> 5e86ecc155d8
  26. Removing intermediate container 51881dd70cd2
  27. Successfully built 5e86ecc155d8

说明:

  • maven-jar-plugin进行package
  • spring-boot-maven-plugin进行repackage
  • 将jar和Dockerfile拷贝到同一个目录(target/docker/)
  • 执行Dockerfile进行build

四、查看镜像

  • docker images
  1. 1 REPOSITORY TAG IMAGE ID CREATED SIZE
  2. 2 myservice1-docker 1.0-SNAPSHOT 5e86ecc155d8 21 seconds ago 575.8 MB

五、启动镜像

  • docker run -d -p 8014:8080 5e86ecc155d8

浏览器访问:localhost:8014/health

注意:

  • 多次指定build去构建的话,之前构建出来的REPOSITORY和TAG都会变为<none>
  1. 1 REPOSITORY TAG IMAGE ID CREATED SIZE
  2. 2 myservice1-docker 1.0-SNAPSHOT 5e86ecc155d8 21 seconds ago 575.8 MB
  3. 3 <none> <none> f0f5b0df8ecf 4 minutes ago 575.8 MB

【第三十八章】 springboot+docker(maven)的更多相关文章

  1. 第三十八章 springboot+docker(maven)

    回顾上一章的整个部署过程: 使用"mvn install"进行打包jar 将jar移动到与Dockerfile文件相同的文件夹下 编写Dockerfile文件 使用"do ...

  2. SpringBoot:三十五道SpringBoot面试题及答案

    SpringBoot面试前言今天博主将为大家分享三十五道SpringBoot面试题及答案,不喜勿喷,如有异议欢迎讨论! Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一 ...

  3. Gradle 1.12用户指南翻译——第三十八章. Eclipse 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  4. “全栈2019”Java第三十八章:类与方法

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. Java开发学习(三十六)----SpringBoot三种配置文件解析

    一. 配置文件格式 我们现在启动服务器默认的端口号是 8080,访问路径可以书写为 http://localhost:8080/books/1 在线上环境我们还是希望将端口号改为 80,这样在访问的时 ...

  6. SpringBoot | 第三十八章:基于RabbitMQ实现消息延迟队列方案

    前言 前段时间在编写通用的消息通知服务时,由于需要实现类似通知失败时,需要延后几分钟再次进行发送,进行多次尝试后,进入定时发送机制.此机制,在原先对接银联支付时,银联的异步通知也是类似的,在第一次通知 ...

  7. 第三十七章 springboot+docker(手动部署)

    一.下载centos镜像 docker pull hub.c.163.com/library/centos:latest docker tag containId centos:7 docker ru ...

  8. Java开发学习(三十五)----SpringBoot快速入门及起步依赖解析

    一.SpringBoot简介 SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程. 使用了 Spring 框架后已经简化了我 ...

  9. 第二十八章 springboot + zipkin(brave定制-AsyncHttpClient)

    brave本身没有对AsyncHttpClient提供类似于brave-okhttp的ClientRequestInterceptor和ClientResponseInterceptor,所以需要我们 ...

随机推荐

  1. Vagrant入门一(转)

    原文: https://github.com/astaxie/Go-best-practice/blob/master/ebook/zh/01.2.md 1.2 Vagrant安装配置 实际上Vagr ...

  2. nodejs(五)同步异步--USING SETTIMEOUT INSTEAD OF SETINTERVAL TO FORCE SERIALIZATION

    Let’s say you want a function that does some I/O — such as parsing a log fi le — that will periodica ...

  3. javaScript高级教程(七)正则表达式中括号三种常见作用

    括号用来将子表达式标记起来,以区别于其他表达式 比如很多的命令行程序都提供帮助命令,键入 h 和键入 help 的意义是一样的,那么就会有这样的表达式: h(elp)? 字符h之后的elp可有可无这里 ...

  4. Django +uwsgi+python3+nginx + mysql 部署

    环境: 服务器ip:192.168.0.110 centos服务器 6.4 + mysql 5.6 + django1.11 +nginx 1.13.7 + uwsgi 2.0.18 uwsgi介绍 ...

  5. MySQL管理之道:性能调优、高可用与监控》迷你书

    MySQL管理之道:性能调优.高可用与监控>迷你书 MYSQL5.5.X主要改进 1.默认使用innodb存储引擎2.充分利用CPU多核处理能力3.提高刷写脏页数量和合并插入数量,改善I/O4. ...

  6. 【剑指offer】旋转数组的最小数字

    一.题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个 ...

  7. c/c++ 中的char* ,const char* 和 char* const 总结[转]

    文章转自:c/c++ 中的char* ,const char* 和 char* const 总结 例1: char* str="abc";//错误写法 (在.c文件中是正确的) c ...

  8. IO操作文件的复制与删除

    import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IO ...

  9. SSH进行登录远程主机,实验室网站,项目

    1:下载putty,双击putty.exe     http://www.putty.be/latest.html 输入要连接的ip和端口号,直接打开open.或者在saved Sessions框里面 ...

  10. (转)找回Git中丢失的Commit

    总结:更新代码前一定要先将本地修改的文件存到本地git仓库.今天脑残直接更新了远程仓库代码导入今天写的代码...... @[git|commit|reflog] 在使用Git的过程中,有时候会因为一些 ...