加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

Spring Boot的 Docker打包插件哪个实在

发布时间:2021-06-01 11:41:47 所属栏目:电商 来源:互联网
导读:最近公司的应用准备容器化,因为几十个应用从测试到发布太麻烦了,而且还会因为环境的因素导致部署中出现各种问题。为了在开发、测试、生产都能保持一致的环境,

最近公司的应用准备容器化,因为几十个应用从测试到发布太麻烦了,而且还会因为环境的因素导致部署中出现各种问题。为了在开发、测试、生产都能保持一致的环境,就引进了容器技术,先拿边缘的项目试试水,积累下经验,今天对几种常见的Spring Boot Docker打包工具进行了简单总结。

Spring Boot Docker

在Spring Boot应用中,我们可以约定不同的标识来定义不同的环境。例如 dev 表示开发环境、test表示测试环境,对应的配置文件为application-dev.yaml、application-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-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下载构建元件,网络如果不好就容易失败。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读