SpringBoot构建Docker镜像的3种方式

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

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

(2)使用 Google 的 jib-maven-plugin。

(3)使用 dockerfle-maven-plugin。

Spring Boot 应用

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

Demo 项目地址:

https://github.com/davelms/medium-articles/tree/master/spring-maven-docker

项目环境:

  • 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

https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin

dockerfile-maven plugin

https://github.com/spotify/dockerfile-maven

本文翻译整理自:

https://medium.com/swlh/build-a-docker-image-using-maven-and-spring-boot-58147045a400

到此这篇关于SpringBoot构建Docker镜像的3种方式的文章就介绍到这了,更多相关SpringBoot构建Docker镜像内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • springboot整合docker部署实现两种构建Docker镜像方式

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal.OpenStack 集群和其他的基础应用平台. docker的应用场景 web应用的自动化打包和发布: 自动化测试和持续集成.发布: 在服务型环境中部署和调整数据库或其他的后台应用: 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境. 项目结构 pac

  • springboot docker jenkins 自动化部署并上传镜像的步骤详解

    springboot + docker + jenkins自动化部署项目,jenkins.mysql.redis都是docker运行的,并且没有使用虚拟机,就在阿里云服务器(centos7)运行 1.前期准备工作不说了 2.在项目根目录下新建Dockerfile Dockerfile文件内容为: #基础镜像 FROM openjdk:12 #作者 MAINTAINER demo <demo@qq.com> VOLUME /tmp #指定配置文件,以及jar包在服务器上的路径 ENTRYPOIN

  • Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数示例代码

    最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4.项目准备 5.编写 Dockerfile 6.发布项目 7.测试服务 环境准备 系统:Ubuntu 17.04 x64 Docker 17.12.0-ce IP:45.32.31.101 一.安装 Docker CE 国内不建议使用:"脚本进行安装",会下载安装很慢,使用步骤 1 安装,看下面的链接:常规安装方式 1.常规安装方式 Ubuntu 17.04 x64 安装

  • SpringBoot构建Docker镜像的3种方式

    本文将介绍3种技术,通过 Maven 把 SpringBoot 应用构建成 Docker 镜像. (1)使用 spring-boot-maven-plugin 内置的 build-image. (2)使用 Google 的 jib-maven-plugin. (3)使用 dockerfle-maven-plugin. Spring Boot 应用 为了方便实践,需要一个 Spring Boot 项目. Demo 项目地址: https://github.com/davelms/medium-ar

  • 详解SpringBoot构建Docker镜像的3种方式

    本文将介绍3种技术,通过 Maven 把 SpringBoot 应用构建成 Docker 镜像. (1)使用 spring-boot-maven-plugin 内置的 build-image. (2)使用 Google 的 jib-maven-plugin. (3)使用 dockerfle-maven-plugin. Spring Boot 应用 为了方便实践,需要一个 Spring Boot 项目. Demo 项目地址: https://github.com/davelms/medium-ar

  • Docker构建镜像的两种方式实现

    目录 从已有镜像更新镜像: 从零开始构建镜像: 从 docker 镜像仓库中下载的镜像不能满足我们的需求时,可以通过以下两种方式对镜像进行更改. 从已有镜像更新镜像 从零开始构建镜像 从已有镜像更新镜像: 更新镜像之前,我们需要使用镜像来创建一个容器. 进入容器: docker run -t -i db2b37ec6181 /bin/bash 在运行的容器内使用 apt-get update 命令进行更新.在完成操作之后,输入 exit 命令来退出这个容器. 此时 ID 为 0aab061e6f

  • 浅谈使用Maven插件构建Docker镜像的方法

    本文介绍了使用Maven插件构建Docker镜像的方法,分享给大家,具体如下: 工具 工欲善其事,必先利其器.笔者经过调研,有以下几款Docker的Maven插件进入笔者视野: 插件名称 官方地址 docker-maven-plugin https://github.com/spotify/docker-maven-plugin docker-maven-plugin https://github.com/fabric8io/docker-maven-plugin docker-maven-pl

  • Maven插件构建Docker镜像的实现步骤

    背景 微服务架构下,微服务在带来良好的设计和架构理念的同时,也带来了运维上的额外复杂性,尤其是在服务部署和服务监控上.单体应用是集中式的,就一个单体跑在一起,部署和管理的时候非常简单,而微服务是一个网状分布的,有很多服务需要维护和管理,对它进行部署和维护的时候则比较复杂. 下面从Dev的角度来看一下Ops的工作.从Dev提交代码,到完成集成测试的一系列步骤如下: 首先是开发人员把程序代码更新后上传到Git,然后其他的事情都将由Jenkins自动完成. 然后Git在接收到用户更新的代码后,会把消息

  • 优化 Docker 镜像大小常见的方式

    平时我们构建的 Docker 镜像通常比较大,占用大量的磁盘空间,随着容器的大规模部署,同样也会浪费宝贵的带宽资源.本文将介绍几种常用的方法来优化 Docker 镜像大小,这里我们使用 Docker Hub 官方上的 Redis 镜像进行说明. 手动管理 我们能够直接想到的方法就是直接修改官方的 Redis 镜像 Dockerfile 文件,手动删除容器运行后不需要的组件,然后重新构建一个新镜像.这种方法理论上是可行的,但是容易出错,而且效果也不是特别明显.主要是不能和官方的镜像实时同步. 多阶

  • SpringBoot创建Docker镜像的方法步骤

    随着越来越多的组织转向容器和虚拟服务器,Docker正成为软件开发工作流程中一个更重要的部分.为此,Spring Boot 2.3中最新的功能之中,提供了为Spring Boot应用程序创建 Docker 镜像的能力. 这篇文章的目的,就是为了给大家介绍如何为 Spring Boot 应用程序创建 Docker 镜像. 1. 传统Docker构建 使用Spring Boot 构建 Docker 镜像的传统方法是使用 Dockerfile .下面是一个简单的例子: FROM openjdk:8-j

  • Spring Boot 2.4 新特性之一键构建Docker镜像的过程详解

    背景 在我们开发过程中为了支持 Docker 容器化,一般使用 Maven 编译打包然后生成镜像,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很方便.docker-maven-plugin 插件就是为了帮助我们在 Maven 工程中,通过简单的配置,自动生成镜像并推送到仓库中. spotify .fabric8 这里主要使用的主要是如下两种插件 spotify .fabric8 , - -配置通过 xml 定义出 Dockerfile 或者挂载外部 Dockerfile 通过调用

  • 通过Dockerfile构建Docker镜像的方法步骤

    Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建. Dockerfile支持Shell类的行尾添加"\"的命令换行方式,以及行首"#"进行注释的格式. 使用Dockerfile构建Docker镜像时注意事项: (1).尽量选取满足需求但较小的基础系统镜像; (2).清理编译生成文件.安装包的缓存等临时文件; (3).安装各个软件时候要指定准确的版本号,并避免引入不

  • 使用Dockerfile构建docker镜像

    今天我们看看Dockerfile创建的方法. 构建docker镜像,有两种方法: 1.一种是使用docker commit命令 2.另外一种是基于docker build命令和dockerfile文件 通常情况下,dockerfile构建镜像比docker commit命令构建 镜像更加灵活,因此采用后者较多. 使用Dockerfile构建docker镜像 1.什么是Dockerfile? dockerfile是一个文件,它是使用DSL语法编写一个文件,之后使用docker build命令基于该

随机推荐