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-项目,带劲!相关推荐

  1. 快速使用 Docker 部署 Spring Boot 项目

    如今 Docker 的使用已经非常普遍,特别是在一线互联网公司,使用 Docker 技术可以帮助企业快速水平扩展服务,从而达到弹性部署业务的能力.在云服务概念兴起之后,Docker 的使用场景和范围进 ...

  2. Docker 部署 Spring Boot 项目初探

    2019独角兽企业重金招聘Python工程师标准>>> 仅想在Docker里运行一个Spring Boot项目,捣鼓了许久... 本文主要适用于Windows环境下的Docker 一 ...

  3. Docker Review - Docker 部署 Spring Boot 项目

    文章目录 Pre 编辑Dockerfile Dockerfile 构建镜像 运行镜像 测试 Pre 随手搞个spring boot的演示项目 ,确保能访问 编辑Dockerfile [root@VM- ...

  4. Linux(centos7)上使用docker部署spring boot项目(加图超详细)

    准备工作 docker部署mysql并成功连接将所需数据库移入所部署的mysql中 docker部署java8 拉取镜像 docker pull java:8    查看镜像 docker image ...

  5. 使用 Docker 部署 Spring Boot 项目

    图文教程链接: http://www.ityouknow.com/springboot/2018/03/19/spring-boot-docker.html

  6. docker添加新的环境变量_Docker的安装及部署Spring Boot项目操作详解!

    本文使用Docker部署Spring Boot项目.部署之前需要环境中已经安装Docker和Maven(用于打包),所以本文先进行安装Docker和Maven:接着搭建一个Spring Boot项目, ...

  7. Spring Boot 2 (四):使用 Docker 部署 Spring Boot

    Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目, ...

  8. Spring Boot 2.0(四):使用 Docker 部署 Spring Boot

    Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目, ...

  9. (转)Spring Boot 2 (四):使用 Docker 部署 Spring Boot

    http://www.ityouknow.com/springboot/2018/03/19/spring-boot-docker.html Docker 技术发展为微服务落地提供了更加便利的环境,使 ...

  10. 使用 Docker 部署 Spring Boot

    使用 Docker 部署 Spring Boot Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. ...

最新文章

  1. 基于Java Socket的文件UpLoad代码(完美版)-用递归解决java的目录树遍历
  2. 关于网络编程中MTU、TCP、UDP、IP
  3. 【GAN优化】从动力学视角看GAN是一种什么感觉?
  4. 重庆邮电计算机科学分数线,2020重庆邮电大学录取分数线已公布
  5. vc6开发一个抓包软件_惊奇软件[21]:这是一个程序员开发的背单词网站,可好用了!...
  6. Hive笔记之JOIN的左外链接和右外链接
  7. 3.1_ 5_动态分区分配算法
  8. linux拨号上网icp,如何用 Linux 拨号上网
  9. 像素越多越好?像元的面积越小越好?
  10. 海森堡不确定性原理实验
  11. 将Capicom调用代码封装到ActiveX——解决javascript调Capicom读取数字证书信息时,IE弹出安全提示的问题...
  12. .NET core 项目发布、部署到iis中
  13. GUI 自动测试工具[2021清单]
  14. 被纳入MSCI ACWI全球指数,达达集团的财报透露出什么信号?
  15. echats统计图表的设计与实现
  16. R-squared 和 Adjusted R-squared联系与区别
  17. 前端程序员应该去哪个城市发展?
  18. WINFORM时间控件(DATATIMEPICKER)的显示格式设置
  19. SQLServer将日期转换成字符串格式
  20. 免费音视频格式转换软件

热门文章

  1. 十九、 指派问题 - 匈牙利法 (0-1 整数规划)
  2. 计算机主机突然断电有什么影响吗,断电对电脑的伤害大吗?有什么损伤?
  3. K8S搭建自动化部署环境(三)Jenkins下载、安装和启动
  4. 国产手机销量大跌,终于被迫降价抛售清理库存
  5. 瀑布流的3种实现方式
  6. Wireshark菜单栏介绍之编辑菜单4-4
  7. 一位架构师用服务打动客户的故事之四
  8. 如何快速搞定技术女神
  9. AVR单片机网址推荐 .
  10. TCP报文( tcp dup ack 、TCP Retransmission)