SpringBoot 构建 Docker 镜像的 3 种方式

本文将介绍3种技术,经过 Maven 把 SpringBoot 应用构建成 Docker 镜像。java

(1)使用 spring-boot-maven-plugin 内置的 build-image.git

(2)使用 Google 的 jib-maven-plugingithub

(3)使用 dockerfle-maven-pluginspring

Spring Boot 应用

为了方便实践,须要一个 Spring Boot 项目。docker

Demo 项目地址:shell

github.com/davelms/med…安全

项目环境:bash

  • Java 11
  • Maven 3.6.3

使用 mvn package 能够正常构建 jar 包。网络

也能够正常运行:架构

java -jar target/demo-application-0.0.1-SNAPSHOT.jar
复制代码

测试页面:

http://localhost:8080/hello

Demo 项目 OK 了,下面就开始实践构建镜像的3个方法。

#1 Spring Boot maven 插件 的 build-image

Spring Boot 预装了本身的用于构建 Docker 镜像的插件,咱们无需进行任何更改,由于它就在 pom.xml 中的 spring-boot-starter-parent。

你不须要写 Dockerfile,也不用操别的心,plugin 都帮你作了,例如 Spring 建议的安全、内存、性能等问题。

只须要简单的执行:

mvn spring-boot:build-image
复制代码

执行完成后会看到成功提示信息:

运行容器测试:

docker run -p 9090:8080 -t demo-application:0.0.1-SNAPSHOT
复制代码

注意:这里映射的本机端口是9090

#2 jib-maven-plugin

Jib 是一个 Maven 和 Gradle 插件,用来建立 Docker 镜像。

这个插件有一个很是明显的特色:不须要本地安装 Docker,这对持续集成是很是方便的,Jib 能够直接推送到指定的 Docker 仓库。

Jib 一样也不须要写 Dockerfile。

使用起来也很是方便,不须要改代码,也能够不改动 pom.xml。

只须要执行:

mvn compile com.google.cloud.tools:jib-maven-plugin:2.3.0:dockerBuild
复制代码
  • mvn compile

是咱们很熟悉的 maven 编译指令。

  • com.google.cloud.tools:jib-maven-plugin:2.3.0

指定了使用 Jib 插件

  • dockerBuild

是 Jib 插件的执行目标,dockerBuild 指定了 Jib 使用咱们本地安装的 Docker。

执行完成后会看到成功提示信息:

启动容器测试:

docker run -p 9091:8080 -t demo-application:0.0.1-SNAPSHOT
复制代码

注意:这里映射的本机端口是9091

#3 dockerfile-maven-plugin

这个插件就须要咱们写 Dockerfile 了,Domo 项目中已经准备好了。

Dockerfile 须要放在项目的根目录下,和 pom.xml 在一块儿。

而后,须要在 pom.xml 中添加一些配置,以便指定仓库、tag 标签,还有上面 Dockerfile 中定义的 JAR_FILE

执行 mvn package 时就会自动构建镜像了,执行完成后就会看到提示信息:

运行容器:

docker run -p 9092:8080 -t demo-application:0.0.1-SNAPSHOT
复制代码

注意:映射的本机端口是 9092

小结

这3个里面最方便的是 SpringBoot 原生的方式,什么都不须要本身作,直接就能用。

最有特色的是 Jib,不须要你本地安装 Docker,能够直接推送到指定的仓库,并且使用起来也很简单。

看起来最麻烦的就是 dockerfile-maven-plugin 这个插件了,须要写 Dockerfile,还得添加配置,可是,实际上他是最好用的,由于前2个与网络环境有关系(你懂的),即便你配置了 Docker 镜像,也会报错,你能够试一下。

参考资料:

  • jib-maven-plugin

github.com/GoogleConta…

  • dockerfile-maven plugin

github.com/spotify/doc…

本文翻译整理自:

medium.com/swlh/build-…

推荐阅读

相关文章
相关标签/搜索