第三十八章 springboot+docker(maven)
回顾上一章的整个部署过程:
- 使用"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插件
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>docker-maven-plugin</artifactId>
- <version>0.4.13</version>
- <configuration>
- <!-- ${project.artifactId}:即artifactId,myservice1-docker ${project.version}:即version,1.0-SNAPSHOT -->
- <imageName>${project.artifactId}:${project.version}</imageName><!-- 镜像名称 -->
- <dockerDirectory>${basedir}/src/main/docker</dockerDirectory><!-- Dockerfile文件地址 -->
- <resources>
- <resource>
- <!-- <targetPath>/</targetPath> -->
- <!-- ${project.build.directory},项目构建输出目录,默认为target/ -->
- <directory>${project.build.directory}</directory>
- <!-- ${project.build.directory},打包出来的jar名称,默认为${project.artifactId}-${project.version} -->
- <include>${project.build.finalName}.jar</include>
- </resource>
- </resources>
- </configuration>
- </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拷贝到同一个文件夹下了
- 之后进行构建过程
三、运行
- mvn clean package docker:build
关键日志:
- [INFO] --- maven-jar-plugin:2.5:jar (default-jar) @ myservice1-docker ---
- [INFO] Building jar: /Users/enniu1/Desktop/project/myservice1-docker/target/myservice1-docker-1.0-SNAPSHOT.jar
- [INFO]
- [INFO] --- spring-boot-maven-plugin:1.3.0.RELEASE:repackage (default) @ myservice1-docker ---
- [INFO]
- [INFO] --- docker-maven-plugin:0.4.13:build (default-cli) @ myservice1-docker ---
- [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
- [INFO] Copying /Users/enniu1/Desktop/project/myservice1-docker/src/main/docker/Dockerfile -> /Users/enniu1/Desktop/project/myservice1-docker/target/docker/Dockerfile
- [INFO] Building image myservice1-docker:1.0-SNAPSHOT
- Step 1 : FROM zhaojigang/jdk8:c7_j8
- ---> e7b4cf41e531
- Step 2 : ADD myservice1-docker-1.0-SNAPSHOT.jar /opt/jar/
- ---> 771c895968f6
- Removing intermediate container 12392489f5a4
- Step 3 : ENV JAVA_HOME /opt/jdk
- ---> Running in a81ffe207dfa
- ---> 7aded06bc5be
- Removing intermediate container a81ffe207dfa
- Step 4 : ENV PATH $PATH:$JAVA_HOME/bin
- ---> Running in b2598b5eee7c
- ---> 5c282af98ab3
- Removing intermediate container b2598b5eee7c
- Step 5 : CMD java -jar /opt/jar/myservice1-docker-1.0-SNAPSHOT.jar
- ---> Running in 51881dd70cd2
- ---> 5e86ecc155d8
- Removing intermediate container 51881dd70cd2
- Successfully built 5e86ecc155d8
说明:
- maven-jar-plugin进行package
- spring-boot-maven-plugin进行repackage
- 将jar和Dockerfile拷贝到同一个目录(target/docker/)
- 执行Dockerfile进行build
四、查看镜像
- docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- 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>
- REPOSITORY TAG IMAGE ID CREATED SIZE
- myservice1-docker 1.0-SNAPSHOT 5e86ecc155d8 21 seconds ago 575.8 MB
- <none> <none> f0f5b0df8ecf 4 minutes ago 575.8 MB
- 使用docker-maven-plugin构建项目,可以避免手工移动jar,并且可以很方便的自己做成archetype
参考:https://github.com/spotify/docker-maven-plugin
第三十八章 springboot+docker(maven)的更多相关文章
- SpringBoot:三十五道SpringBoot面试题及答案
SpringBoot面试前言今天博主将为大家分享三十五道SpringBoot面试题及答案,不喜勿喷,如有异议欢迎讨论! Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一 ...
- Gradle 1.12用户指南翻译——第三十八章. Eclipse 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- “全栈2019”Java第三十八章:类与方法
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Java开发学习(三十六)----SpringBoot三种配置文件解析
一. 配置文件格式 我们现在启动服务器默认的端口号是 8080,访问路径可以书写为 http://localhost:8080/books/1 在线上环境我们还是希望将端口号改为 80,这样在访问的时 ...
- 【第三十八章】 springboot+docker(maven)
回顾上一章的整个部署过程: 使用"mvn install"进行打包jar 将jar移动到与Dockerfile文件相同的文件夹下 编写Dockerfile文件 使用"do ...
- SpringBoot | 第三十八章:基于RabbitMQ实现消息延迟队列方案
前言 前段时间在编写通用的消息通知服务时,由于需要实现类似通知失败时,需要延后几分钟再次进行发送,进行多次尝试后,进入定时发送机制.此机制,在原先对接银联支付时,银联的异步通知也是类似的,在第一次通知 ...
- 第三十七章 springboot+docker(手动部署)
一.下载centos镜像 docker pull hub.c.163.com/library/centos:latest docker tag containId centos:7 docker ru ...
- Java开发学习(三十五)----SpringBoot快速入门及起步依赖解析
一.SpringBoot简介 SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程. 使用了 Spring 框架后已经简化了我 ...
- 第二十八章 springboot + zipkin(brave定制-AsyncHttpClient)
brave本身没有对AsyncHttpClient提供类似于brave-okhttp的ClientRequestInterceptor和ClientResponseInterceptor,所以需要我们 ...
随机推荐
- 利用Code128字体将文本转换为code128条形码
利用Code128字体将文本转换为code128条形码[转] 最近在做仓储的项目,许多的打印文件都包含条形码,之前一直使用C39P24DhTt字体直接转换为39码,但是最近要求使用code128编 ...
- 基于web的IM软件通信原理分析
关于IM(InstantMessaging)即时通信类软件(如微信,QQ),大多数都是桌面应用程序或者native应用较为流行,而网上关于原生IM或桌面IM软件类的通信原理介绍也较多,此处不再赘述.而 ...
- angular+bootstrap+MVC 之三,分页控件初级版
今天实现一个分页控件,效果如下: 1.HTML: <!doctype html> <!--suppress ALL --> <html ng-app="appT ...
- IntelliJ IDEA热加载自动更新(Update classes and resources )
IntelliJ IDEA默认文件是自动保存的,但是手头有个项目jsp文件改动后,在tomcat中不能立即响应变化.想要jsp文件改动后立刻看到变化,可以通过修改配置来实现. ...
- 使用springMVC实现文件上传和下载之文件下载
接上一篇,文件下载需要获取下载文件的存储路径,这里只是手动填入,如果是在具体项目中,可以把文件名和上传后的存储路径保存在数据库中.然后增加一个文件列表的页面展示文件名和文件路径,然后点击下载的时候把相 ...
- 发送SMS短信(JSON) 转载
http://blog.csdn.net/ldl22847/article/details/42553883 public static string GetMobileConfByUserId( ...
- linux iostat 性能指标说明
Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视. 它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况. ...
- 让finder显示路径
在控制台输入 defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES 重启finder即可.
- java环境
http://www.iyunv.com/thread-65867-1-1.html http://www.360doc.com/content/15/0525/19/21365845_4732029 ...
- Mono addin 学习笔记 3
典型的基于Mono addin插件框架的应用程序有以下一个部分组成: 1. 主应用程序:提供了一系列的扩展点(Extension Point)供其他应用进行扩展: 2. 扩展插件: 其部署结构图如下为 ...