我用一行命令,工作效率翻了 10 倍

前情提要

  • 我们在日常工作中,并不是人均都可以进入比较规范化的团队,那么如果你作为一名研发,大概率是要承担部分运维职责的,如,应用的部署, SO,部署这么麻烦的事情,有什么办法可以简化,让自己暗爽。
  • 比如小白手套在某小皮包公司,需要自己负责功能开发,以及测试环境的部署,需要使用容器环境。
  • 举例 Java 语言,大部分做法一般是
    • 首先, mvn clean package
    • 然后,找一份 Dockerfile
    • 执行 docker build -t xxx:20240106 .
    • 最后登录到服务器 docker run -d -p xx:xx xxx:20240106 或者 docker-compose -f xxxx up -d

其实 ,最后一步用 docker-compose 还好,但是之前打包,构建镜像的操作,怎么样才能合而为一,避免手动输入很长的命令,甚至要思考镜像号有没有被使用过的问题。

神器 fabric8

官方Doc:https://dmp.fabric8.io/

Fabric8是一个开源的集成开发平台,致力于改善容器化应用和微服务的开发与部署。它提供一套工具和库,以简化整个DevOps生命周期,从开发到部署再到监控。

本章重点在于介绍它与 Maven 集成自动化构建镜像的能力

初始化

利用脚手架生成了一个空的项目

我用一行命令,工作效率翻了 10 倍_第1张图片

添加 Dockerfile

添加一个提供 java 11 的运行时环境

我用一行命令,工作效率翻了 10 倍_第2张图片

引入组件

在 pom 文件中引入 plugin docker-maven-plugin

<plugin>
  
  <groupId>io.fabric8groupId>
  <artifactId>docker-maven-pluginartifactId>
  <version>0.43.0version>
  <configuration>
      
      <registry>harbor.ningyiplus.comregistry>
      <images>
          <image>
              
              <name>apps/${project.artifactId}/${project.artifactId}:${project.version}name>
              <build>
                  
                  <dockerFileDir>${project.basedir}dockerFileDir>
                  
                  <tags>
                      
                      <tag>${current.time}tag>
                  tags>
              build>
          image>
      images>
      
      <authConfig>
          <username>ningyiusername>
          <password>ZTF3C4bEy9@xxpassword>
      authConfig>
  configuration>
plugin>

⚠️ 当前系统时间也需要一个插件支持,下面引入 build-helper-maven-plugin

<plugin>
  
  <groupId>org.codehaus.mojogroupId>
  <artifactId>build-helper-maven-pluginartifactId>
  <version>3.3.0version>
  <executions>
      <execution>
          <id>timestamp-propertyid>
          <goals>
              <goal>maven-versiongoal>
              <goal>timestamp-propertygoal>
          goals>
          <configuration>
              <name>current.timename>
              <pattern>yyyyMMddHHmmsspattern>
          configuration>
      execution>
  executions>
plugin>

一句命令搞定编译+镜像推送

在项目根目录下执行 mvn clean package docker:build docker:push

可以看到命令已经执行成功,并且已经完成了项目编译,镜像构建,镜像推送这些操作

我用一行命令,工作效率翻了 10 倍_第3张图片

让我们到镜像仓库看下镜像是否推送成功了吧

我用一行命令,工作效率翻了 10 倍_第4张图片

没有任何问题!

结语

集成 maven 构建镜像只是 fabric8 的冰山一角,它有更多强大的能力,如果感兴趣请自行查阅官方手册。

公众号回复 自动构建 即可获取本文章源码。⚠️:真实镜像仓库账密已做处理,可以推送 Docker 官方仓库 或 阿里云镜像仓库。

祝你好运!

你可能感兴趣的:(java-ee,java,maven,docker)