这篇文章给大家分享的是有关弹簧引导码头工人打包工具有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
springboot是什么
springboot一种全新的编程规范,其设计目的是用来简化新弹簧应用的初始搭建以及开发过程,springboot也是一个服务于框架的框架,服务范围是简化配置文件。
弹簧引导码头工人
在春天引导应用中,我们可以约定不同的标识来定义不同的环境,例如dev表示开发环境,测试表示测试环境,对应的配置文件为apppcation-dev.yaml, apppcation-test.yaml。我们通过声明spring.profiles.active来激活对应的环境配置,例如激活dev环境时spring.profiles。积极=dev。完整的启动命令为:
java -Djava.security.egd=文件:/dev/?urandom , -Dspring.profiles.active=dev -jar spring-boot-app。jar
根据上面的命令编写一个能够适应多环境的Dockerfile:
#,引入,openjdk 镜像, 得到adoptopenjdk/openjdk8 #,声明作者, LABEL 作者=felord OG=felord.cn #,挂载几个有用的文件夹,比如日志, VOLUME [“/tmp",“/logs"], #,声明一个环境参数用来动态启用配置文件,默认dev ENV 积极=dev #,暴露端口, EXPOSE 8080, #,复制并修改应用打包后的jar文件名称, ADD /目标/flyway-spring-boot-1.0.0.jar  app.jar #,容器启动时第一个运行的命令,用来启动应用, ENTRYPOINT [“java",“-Djava.security.egd=文件:/dev/?urandom",“-Dspring.profiles.active=${活跃}“,“-jar",“app.jar"]
这样打包的码头工人镜像就可以通过码头工人运行添加额外的——env活跃=测试来动态的改变环境。单纯的编写Dockerfile不方便我们DevOps。
码头工人镜像生命周期
我们需要能够自动地构建,推送到仓库,拉取镜像,运行一系列流水线操作。好在市面上有很多工具来帮助我们实现这一过程。
spring-boot-maven-plugin
这个是弹簧引导官方的插件,在2。x的某个版本提供了码头工人镜像构建能力。
& lt; project>, & lt; build>大敌; ,,& lt; plugins> ,,& lt; plugin>, ,,,& lt; groupId> org.springframework.boot, ,,,& lt; artifactId> spring-boot-maven-plugin, ,,,& lt; configuration>, ,,,,& lt; image>, ,,,,& lt; name>docker.repo.com/library/$ {project.artifactId}: {project.version} & lt;美元/name>, ,,,,,& lt; publish> true, ,,,,& lt;/image>, ,,,,& lt; docker>, ,,,,,& lt; publishRegistry>, ,,,,,,& lt; username> user, ,,,,,,& lt; password> secret, ,,,,,,& lt; url> https://docker.repo.com/v1/, ,,,,,,& lt; email> user@example.com, ,,,,,& lt;/publishRegistry>, ,,,,& lt;/docker>, ,,,& lt;/configuration>, ,,& lt;/plugin>, & lt;/plugins>才能, & lt;/build>大敌; & lt;/project>
配置好码头工人私仓后就可以通过mvn清洁spring-boot:构建过程进行构建镜像了。
这种方式好处就是无额外依赖,缺点就是需要从github下载构建元件,网络如果不好就容易失败。
Spotify Maven插件
Spotify Maven插件是一个目前比较普遍的选择。它要求应用程序开发人员编写Dockerfile,并把Dockerfile放在项目src/main/码头工人目录下。然后你就可以通过引入:
& lt; plugin>, ,,,,,,,,,& lt; groupId> com.spotify, ,,,,,,,,,& lt; artifactId> dockerfile-maven-plugin, ,,,,,,,,,& lt; version> 1.4.8, ,,,,,,,,,& lt; configuration>, ,,,,,,,,,,,,,& lt; repository>repo.com/$ {project.artifactId} & lt;/repository>, ,,,,,,,,,& lt;/configuration>, ,,,,,& lt;/plugin>
这个插件提供了mvn dockerfile:构建、mvn dockerfile:标签,mvn dockerfile:把三个命令分别用来构建,打标签,发布到远端私有仓库,非常简单。
这个是一个非常容易上手的插件,唯一的要求就是需要会编写dockerfile,对定制化要求高的可以使用这个。
臂Maven插件
这个曾经我在早些时候的一篇文章中已经介绍过了,可以详细了解一下。它是谷歌开源的OCI镜像打包工具,可以用来打包码头工人镜像,大部分情况下已经满足需要。但是如果你要定制化的话还是不容易的,需要阅读官方给的文档。最开始的dockerfile如果使用臂的话需要这样配置: