使用Docker部署Spring-Boot-项目,带劲!
Docker 一次构建、处处运行及快速启停的特性,在微服务架构中有着举足轻重的地位,具体的概念性的东西就不介绍了,不懂的点击这里阅读 Docker 基础教程。
本篇栈长主要介绍下如何通过 IntelliJ IDEA、Maven 来操作 Docker 部署 Spring Boot 项目,这也是我们 Java 程序员最关心的开发实战。
一、Maven 插件配置
首先在 Maven pom.xml 配置文件中加入 Docker 的 Maven 插件。
我看网上很多人还在用 docker-maven-plugin
插件:
<properties><docker.image.prefix>docker</docker.image.prefix>
</properties><build><plugins><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.2.2</version><configuration><imageName>${docker.image.prefix}/${project.artifactId}</imageName><dockerDirectory>src/main/docker</dockerDirectory><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources></configuration></plugin></plugins>
</build>
你们还在用这个插件吗?
栈长从官方仓库看到,这个插件官方已经不维护了:
所以这个插件我就不推荐大家使用了,而是推荐官方的另外一个插件:dockerfile-maven。
<build><plugins><plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>1.4.13</version><executions><execution><id>default</id><goals><goal>build</goal><goal>push</goal></goals></execution></executions><configuration><repository>javastack/${project.name}</repository><tag>${project.version}</tag><buildArgs><JAR_FILE>${project.build.finalName}.jar</JAR_FILE></buildArgs><dockerfile>src/main/docker/Dockerfile</dockerfile></configuration></plugin></plugins>
</build>
这个插件使用简单,功能更强大。
新插件地址:
https://github.com/spotify/dockerfile-maven
最新版插件的环境要求:
JDK 7+
Apache Maven 3.5.2+
这个插件的牛逼之处在于:
1、从插件名称就可以知道,这个插件是基于 Dockerfile 文件进行构建 Docker 项目的,专注 Dockerfile 文件,所以需要一个 Dockerfile 文件,Dockerfile 也是构建 Docker 项目的基石。
2、把 Docker 的构建过程集成到了 Maven 的构建过程之中,如果使用默认的配置,使用 mvn package
命令就能打包成一个 Docker 镜像,使用 mvn deploy
命令就能推送到 Docker 仓库。
3、使我们的构建目标更明确,如我们先使用 mvn dockerfile:build
然后再 mvn dockerfile:tag
,然后再 mvn dockerfile:push
,也可以满足同时构建再推送的场景,如: mvn dockerfile:build dockerfile:push
,这都没问题的。
4、与 Maven 构建集成,我们可以在一个项目中依赖另外一个项目的 Docker 镜像,Maven 将以正确的顺序构建项目。当我们运行涉及多个服务的集成测试用例时,这很有用的。
二、Docker 配置
Dockerfile 是创建 Docker 镜像的基本配置文件,本身是一个文本文件。
插件默认加载位置为项目所在根目录,因为我在上面的 Maven 插件配置中指明了路径。所以,在 src/main/docker/ 目录下添加一个 Dockerfile 文件:
# 添加 Java 8 镜像来源
FROM java:8# 添加参数
ARG JAR_FILE# 添加 Spring Boot 包
ADD target/${JAR_FILE} app.jar# 执行启动命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
值得说一下的是,上面的 JAR_FILE
参数就是从 Docker Maven 插件中指定的构建参数,这也是这个插件的强大之处,可以翻到文章上面去看一下。
具体的 Dockerfile
文件细节比较多,这里就不展开详细介绍了,后面我再开一篇单独介绍,关注公众号Java技术栈第一时间推送。
三、添加测试接口
添加一个测试接口,以便后面部署测试。
package cn.javastack.springboot.docker;import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;/*** 微信公众号:Java技术栈*/
@RestController
@SpringBootApplication
public class DockerApplication {public static void main(String[] args) {SpringApplication.run(DockerApplication.class);}@GetMapping("/docker/hello")public String helloDocker() {return "hello docker";}}
Spring Boot 基础性的知识和搭建过程就不介绍了,不熟悉的可以关注公众号Java技术栈,在后台回复关键字 “boot” 阅读我之前写的系列教程。
所有 Spring Boot 教程实战源码在下面个仓库:
https://github.com/javastacks/spring-boot-best-practice
本篇所有实战源码到时也会全部同步到上面,大家 Star 一下吧!
四、构建 Docker 镜像
配置了 Maven 插件和 Dockerfile 文件后就可以开始构建 Docker 镜像了。
上面也说了,Docker 构建过程已经集成到了 Maven 的构建过程之中,那么可以直接使用 mvn package
就可以同时打包和构建 Docker 镜像了。
在 IDEA 中可以直接点击插件对应的命令运行:
插件会根据 Dockerfile 文件构建,文件中有多少条命令,就分为几个步骤构建,如果没问题就会构建成功。
五、IDEA 怎么操作 Docker?
一旦我们创建了 Dockerfile 文件,IDEA 就会自动识别并提示我们创建 Docker 连接,当然,我们也可以调出 Services 面板进行手动创建。
打开 IDEA 中的 Services 面板:
然后点击 Add service > Docker Connection 来添加一个 Docker 连接:
创建完后会自动连接上,点击展开会显示 Docker 本地所有镜像和容器:
如上图所示,就是我们刚构建的镜像。
六、创建并运行容器
右击上面的镜像,选择 “Create Container” 菜单来创建并运行一个容器。
填写相应的运行参数,再点击运行按钮,容器即开始运行。
然后在 Build Log 和 Log 面板中可以看到容器运行日志和应用程序运行日志:
项目在 Docker 中运行起来了,然后再访问下上面写的测试接口:
http://localhost:8080/docker/hello
OK,到这里就部署并运行成功了。
七、总结
本文栈长使用 IntelliJ IDEA、Maven 用 Docker 部署了一个 Spring Boot 项目,虽然只是一个简单的示例,但同时为了配合写文章,全程硬是肝了几个小时。
本文只是一个简单的示例,所以过程并不复杂,想要构建更加复杂的应用,我们需要学习 Dockerfile 文件的编写,这个下期再分享吧,关注公众号Java技术栈第一时间推送,不要走开。
如果只是运行一个 Spring Boot 应用确实没有必要用到 Docker,本文也是为了演示而上了 Docker。
最后
一次偶然,从朋友那里得到一份“java高分面试指南”,里面涵盖了25个分类的面试题以及详细的解析:JavaOOP、Java集合/泛型、Java中的IO与NIO、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、Spring Boot、Spring Cloud、RabbitMQ、Dubbo 、MyBatis 、ZooKeeper 、数据结构、算法、Elasticsearch 、Kafka 、微服务、Linux。
这不,马上就要到招聘季了,很多朋友又开始准备“金三银四”的春招啦,那我想这份“java高分面试指南”应该起到不小的作用,所以今天想给大家分享一下。
请注意:关于这份“java高分面试指南”,每一个方向专题(25个)的题目这里几乎都会列举,在不看答案的情况下,大家可以自行测试一下水平 且由于篇幅原因,这边无法展示所有完整的答案解析
afka 、微服务、Linux。
这不,马上就要到招聘季了,很多朋友又开始准备“金三银四”的春招啦,那我想这份“java高分面试指南”应该起到不小的作用,所以今天想给大家分享一下。
[外链图片转存中…(img-wGpzQ82b-1623615079081)]
请注意:关于这份“java高分面试指南”,每一个方向专题(25个)的题目这里几乎都会列举,在不看答案的情况下,大家可以自行测试一下水平 且由于篇幅原因,这边无法展示所有完整的答案解析
资料领取方式:点击【java高分面试指南-25大专题分类】
使用Docker部署Spring-Boot-项目,带劲!相关推荐
- 快速使用 Docker 部署 Spring Boot 项目
如今 Docker 的使用已经非常普遍,特别是在一线互联网公司,使用 Docker 技术可以帮助企业快速水平扩展服务,从而达到弹性部署业务的能力.在云服务概念兴起之后,Docker 的使用场景和范围进 ...
- Docker 部署 Spring Boot 项目初探
2019独角兽企业重金招聘Python工程师标准>>> 仅想在Docker里运行一个Spring Boot项目,捣鼓了许久... 本文主要适用于Windows环境下的Docker 一 ...
- Docker Review - Docker 部署 Spring Boot 项目
文章目录 Pre 编辑Dockerfile Dockerfile 构建镜像 运行镜像 测试 Pre 随手搞个spring boot的演示项目 ,确保能访问 编辑Dockerfile [root@VM- ...
- Linux(centos7)上使用docker部署spring boot项目(加图超详细)
准备工作 docker部署mysql并成功连接将所需数据库移入所部署的mysql中 docker部署java8 拉取镜像 docker pull java:8 查看镜像 docker image ...
- 使用 Docker 部署 Spring Boot 项目
图文教程链接: http://www.ityouknow.com/springboot/2018/03/19/spring-boot-docker.html
- docker添加新的环境变量_Docker的安装及部署Spring Boot项目操作详解!
本文使用Docker部署Spring Boot项目.部署之前需要环境中已经安装Docker和Maven(用于打包),所以本文先进行安装Docker和Maven:接着搭建一个Spring Boot项目, ...
- Spring Boot 2 (四):使用 Docker 部署 Spring Boot
Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目, ...
- Spring Boot 2.0(四):使用 Docker 部署 Spring Boot
Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目, ...
- (转)Spring Boot 2 (四):使用 Docker 部署 Spring Boot
http://www.ityouknow.com/springboot/2018/03/19/spring-boot-docker.html Docker 技术发展为微服务落地提供了更加便利的环境,使 ...
- 使用 Docker 部署 Spring Boot
使用 Docker 部署 Spring Boot Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. ...
最新文章
- 基于Java Socket的文件UpLoad代码(完美版)-用递归解决java的目录树遍历
- 关于网络编程中MTU、TCP、UDP、IP
- 【GAN优化】从动力学视角看GAN是一种什么感觉?
- 重庆邮电计算机科学分数线,2020重庆邮电大学录取分数线已公布
- vc6开发一个抓包软件_惊奇软件[21]:这是一个程序员开发的背单词网站,可好用了!...
- Hive笔记之JOIN的左外链接和右外链接
- 3.1_ 5_动态分区分配算法
- linux拨号上网icp,如何用 Linux 拨号上网
- 像素越多越好?像元的面积越小越好?
- 海森堡不确定性原理实验
- 将Capicom调用代码封装到ActiveX——解决javascript调Capicom读取数字证书信息时,IE弹出安全提示的问题...
- .NET core 项目发布、部署到iis中
- GUI 自动测试工具[2021清单]
- 被纳入MSCI ACWI全球指数,达达集团的财报透露出什么信号?
- echats统计图表的设计与实现
- R-squared 和 Adjusted R-squared联系与区别
- 前端程序员应该去哪个城市发展?
- WINFORM时间控件(DATATIMEPICKER)的显示格式设置
- SQLServer将日期转换成字符串格式
- 免费音视频格式转换软件