广告
返回顶部
首页 > 资讯 > 精选 >Spring Boot Docker打包工具有哪些
  • 431
分享到

Spring Boot Docker打包工具有哪些

2023-06-14 23:06:02 431人浏览 安东尼
摘要

这篇文章给大家分享的是有关Spring Boot Docker打包工具有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SpringBoot是什么springboot一种全新的编程规范,其设计目的是用来简化新S

这篇文章给大家分享的是有关Spring Boot Docker打包工具有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

SpringBoot是什么

springboot一种全新的编程规范,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,SpringBoot也是一个服务于框架的框架,服务范围是简化配置文件。

Spring Boot Docker

在Spring Boot应用中,我们可以约定不同的标识来定义不同的环境。例如 dev 表示开发环境、test表示测试环境,对应的配置文件为apppcation-dev.yaml、apppcation-test.yaml。我们通过声明spring.profiles.active来激活对应的环境配置,例如激活dev环境时spring.profiles.active=dev。完整的启动命令为:

java -Djava.security.egd=file:/dev/./urandom  -Dspring.profiles.active=dev -jar spring-boot-app.jar

根据上面的命令编写一个能够适应多环境的Dockerfile:

# 引入 openjdk 镜像 FROM adoptopenjdk/openjdk8 # 声明作者 LABEL AUTHOR=felord OG=felord.cn # 挂载几个有用的文件夹 比如日志 VOLUME ["/tmp","/logs"] # 声明一个环境参数用来动态启用配置文件 默认dev ENV ACTIVE=dev # 暴露端口 EXPOSE 8080 # 复制并修改应用打包后的jar文件名称 ADD /target/flyway-spring-boot-1.0.0.jar app.jar # 容器启动时第一个运行的命令 用来启动应用 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=${ACTIVE}","-jar","app.jar"]

这样打包的Docker镜像就可以通过docker run添加额外的--env ACTIVE=test 来动态的改变环境。单纯的编写Dockerfile不方便我们devops

Spring Boot Docker打包工具有哪些

docker 镜像生命周期

我们需要能够自动地构建、推送到仓库、拉取镜像、运行一系列流水线操作。好在市面上有很多工具来帮助我们实现这一过程。

spring-boot-Maven-plugin

这个是Spring Boot官方的插件,在2.x的某个版本提供了Docker镜像构建能力。

<project>  <build>   <plugins>    <plugin>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-maven-plugin</artifactId>     <configuration>      <image>      <name>docker.repo.com/library/${project.artifactId}:${project.version}</name>       <publish>true</publish>      </image>      <docker>       <publishReGIStry>        <username>user</username>        <passWord>secret</password>        <url>https://docker.repo.com/v1/</url>        <email>user@example.com</email>       </publishRegistry>      </docker>     </configuration>    </plugin>   </plugins>  </build> </project>

配置好Docker私仓后就可以通过mvn clean spring-boot:build-image 进行构建镜像了。

这种方式好处就是无额外依赖,缺点就是需要从GitHub下载构建元件,网络如果不好就容易失败。

Spotify Maven Plugin

Spotify Maven 插件是一个目前比较普遍的选择。它要求应用程序开发人员编写Dockerfile,并把Dockerfile放在项目src/main/docker目录下。然后你就可以通过引入:

<plugin>           <groupId>com.spotify</groupId>           <artifactId>dockerfile-maven-plugin</artifactId>           <version>1.4.8</version>           <configuration>               <repository>repo.com/${project.artifactId}</repository>           </configuration>       </plugin>

这个插件提供了mvn dockerfile:build、mvn dockerfile:tag、mvn dockerfile:push三个命令分别用来构建、打标签、发布到远端私有仓库,非常简单。

这个是一个非常容易上手的插件,唯一的要求就是需要会编写Dockerfile,对定制化要求高的可以使用这个。

Jib Maven Plugin

这个曾经我在早些时候的一篇文章中已经介绍过了,可以详细了解一下。它是谷歌开源的OCI镜像打包工具,可以用来打包Docker镜像,大部分情况下已经满足需要。但是如果你要定制化的话还是不容易的,需要阅读官方给的文档。最开始的Dockerfile如果使用JIb的话需要这样配置:

<plugin>     <groupId>com.Google.cloud.tools</groupId>     <artifactId>jib-maven-plugin</artifactId>     <version>3.0.0</version>     <configuration>         <from>             <image>adoptopenjdk/openjdk8</image>         </from>         <to>             <image>docker.repo.com/library/${project.artifactId}</image>             <auth>                 <username>felord</username>                 <password>xxxxxx</password>             </auth>             <tags>                 <tag>${project.version}</tag>             </tags>         </to>         <extraDirectories>             <paths>                 <path>                     <from>target/${project.artifactId}-${project.version}.jar</from>                     <includes>*.jar</includes>                     <into>/app.jar</into>                 </path>             </paths>         </extraDirectories>         <containerizingMode>packaged</containerizingMode>         <container>             <volumes>/tmp,/logs</volumes>             <ports>                 <port>8080</port>             </ports>             <environment>                 <active>dev</active>             </environment>             <entrypoint>                 java,-Djava.security.egd=file:/dev/./urandom,-Dspring.profiles.active=${active},-jar,/app.jar             </entrypoint>             <creationTime>USE_CURRENT_TIMESTAMP</creationTime>         </container>     </configuration> </plugin>

优点是不需要本地Docker环境,而且支持分层构建、镜像瘦身,上手容易;缺点是定制化比较困难。

感谢各位的阅读!关于“Spring Boot Docker打包工具有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Spring Boot Docker打包工具有哪些

本文链接: https://www.lsjlt.com/news/275827.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring Boot Docker打包工具有哪些
    这篇文章给大家分享的是有关Spring Boot Docker打包工具有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。springboot是什么springboot一种全新的编程规范,其设计目的是用来简化新S...
    99+
    2023-06-14
  • Spring Boot Docker打包工具小结
    目录Spring Boot Dockerspring-boot-maven-pluginSpotify Maven PluginJib Maven Plugin 最近公司的应用准备容...
    99+
    2022-11-12
  • vue打包工具有哪些
    vue中的打包工具有:1.parcel,于vue的Web应用打包工具;2.Weex,可以使用现代化的Web技术开发高性能原生应用的框架;3.webpack,基于vue的模块打包器;vue中常见的打包工具有以下几种parcelparcel是一...
    99+
    2022-10-10
  • NumPy索引打包的PHP工具有哪些?
    NumPy是一个强大的Python科学计算库,提供了大量的数据结构、算法和函数来处理数组和矩阵。NumPy的索引和切片功能非常强大,可以用来访问和修改数组的元素。在PHP中,有一些工具可以模拟NumPy的索引和切片功能,本文将介绍一些常用的...
    99+
    2023-09-04
    打包 numpy 索引
  • Java中的打包工具有哪些?如何选择最适合自己的打包工具?
    Java是一门广泛使用的编程语言,应用范围涉及到桌面应用程序、Web应用程序、移动应用程序等多个领域。在Java开发中,打包工具是不可或缺的一部分。本文将介绍Java中的打包工具有哪些,以及如何选择最适合自己的打包工具。 一、Java中的打...
    99+
    2023-09-13
    日志 数据类型 打包
  • 有哪些开源的Docker工具
    今天就跟大家聊聊有关有哪些开源的Docker工具,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。watchtower(自动更新 Docker 容器)Watchtower 监视运行容器并...
    99+
    2023-06-06
  • GO打包工具有哪些?Git是必需的吗?
    GO语言是一种快速、高效的编程语言,近年来越来越受到开发者们的青睐。在GO语言的开发过程中,打包工具是不可或缺的一部分。那么,GO打包工具都有哪些呢?Git是必需的吗?下面我们来一探究竟。 GO打包工具 Go Build Go Build是...
    99+
    2023-10-30
    git 打包 ide
  • Spring中的工具类有哪些
    这篇文章给大家介绍Spring中的工具类有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。文件资源操作Spring 定义了一个 org.springframework.core.io.Resource 接口,Reso...
    99+
    2023-05-31
    spring
  • Java 打包同步工具推荐:哪些工具最实用?
    在 Java 开发中,打包和同步代码是非常常见的任务。对于一些大型项目来说,这些任务可能会消耗大量的时间和精力。为了提高效率和减少手动操作的错误,使用一些自动化的工具来完成这些任务是非常必要的。在本文中,我们将介绍几个 Java 打包同步...
    99+
    2023-06-20
    打包 同步 unix
  • pytorch常用工具包有哪些
    本文小编为大家详细介绍“pytorch常用工具包有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“pytorch常用工具包有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、pytorch 简介Pytor...
    99+
    2023-07-05
  • golang包管理工具有哪些
    golang中的包管理工具有:1.go mod,golang1.11版本中的官方包管理工具;2.govendor,golang的依赖包管理工具;3.godep,golang官方的依赖管理工具;4.Module,golang官方提供的包管理工...
    99+
    2022-10-06
  • 免费的CSS UI工具包有哪些
    这篇文章主要介绍了免费的CSS UI工具包有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇免费的CSS UI工具包有哪些文章都会有所收获,下面我们一起来看看吧。 Sema...
    99+
    2022-10-19
  • Python多进程multiprocessing包有哪些工具
    这篇文章主要介绍“Python多进程multiprocessing包有哪些工具”,在日常操作中,相信很多人在Python多进程multiprocessing包有哪些工具问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-06-02
  • Java中Lang包的工具类有哪些
    今天就跟大家聊聊有关Java中Lang包的工具类有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Lang 中工具类比较多,这里介绍几个主要的:  ClassUtils: ...
    99+
    2023-05-31
    java lang ava
  • 与Docker紧密整合的开源工具有哪些
    这篇文章将为大家详细讲解有关与Docker紧密整合的开源工具有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Docker 一直是第三方开发人员关注的重点,很多项目扩展、补充或增强了 Do...
    99+
    2023-06-19
  • linux网络抓包分析工具有哪些
    常见的linux网络抓包分析工具有:1.TcpDump,网络数据采集分析工具;2.Netstat,监控TCP/IP网络的工具;常见的linux网络抓包分析工具有以下两种TcpDumpTcpDump是一个网络数据采集分析工具,使用TcpDum...
    99+
    2022-10-09
  • 有哪些常用的 Java 打包工具和 NPM 包管理工具?如何在编程算法中使用它们?
    Java 打包工具和 NPM 包管理工具在现代软件开发中扮演着重要的角色。Java 开发人员通常使用 Maven 或 Gradle 进行项目构建和依赖管理,而 Node.js 开发人员则使用 NPM 进行包管理。在本文中,我们将讨论这些工具...
    99+
    2023-07-31
    打包 npm 编程算法
  • 有哪些流行的Python可视化工具包
    这篇文章主要讲解了“有哪些流行的Python可视化工具包”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“有哪些流行的Python可视化工具包”吧!Matplotlib、Seaborn 和 Pa...
    99+
    2023-06-16
  • Spring框架中的日志记录工具有哪些?
    Spring框架是一个非常流行的Java应用程序框架,它提供了大量的功能和工具来帮助开发人员构建高效、可靠的应用程序。其中一个重要的功能就是日志记录,Spring框架提供了多种日志记录工具来帮助开发人员记录和管理应用程序的日志信息。本文将介...
    99+
    2023-07-20
    并发 spring 日志
  • 日常MySQL运维工具包github地址有哪些
    日常MySQL运维工具包github地址有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1) MySQL Monitor面向研发人员图...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作