我用一行命令,工作效率翻了 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 集成自动化构建镜像的能力

初始化

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

image-20240115223641141

添加 Dockerfile

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

image-20240115223837047

引入组件

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

<plugin>
  <!-- https://mvnrepository.com/artifact/io.fabric8/docker-maven-plugin -->
  <groupId>io.fabric8</groupId>
  <artifactId>docker-maven-plugin</artifactId>
  <version>0.43.0</version>
  <configuration>
      <!-- 你的镜像仓库 -->
      <registry>harbor.ningyiplus.com</registry>
      <images>
          <image>
              <!-- 你的镜像命名规则 我这里使用项目唯一标识+项目版本 -->
              <name>apps/${project.artifactId}/${project.artifactId}:${project.version}</name>
              <build>
                  <!-- dockerfile 路径 -->
                  <dockerFileDir>${project.basedir}</dockerFileDir>
                  <!-- 镜像 tag 我这里使用系统时间-->
                  <tags>
                      <!--suppress UnresolvedMavenProperty -->
                      <tag>${current.time}</tag>
                  </tags>
              </build>
          </image>
      </images>
      <!-- 镜像仓库账号密码 -->
      <authConfig>
          <username>ningyi</username>
          <password>ZTF3C4bEy9@xx</password>
      </authConfig>
  </configuration>
</plugin>

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

<plugin>
  <!-- https://mvnrepository.com/artifact/org.codehaus.mojo/build-helper-maven-plugin -->
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <version>3.3.0</version>
  <executions>
      <execution>
          <id>timestamp-property</id>
          <goals>
              <goal>maven-version</goal>
              <goal>timestamp-property</goal>
          </goals>
          <configuration>
              <name>current.time</name>
              <pattern>yyyyMMddHHmmss</pattern>
          </configuration>
      </execution>
  </executions>
</plugin>

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

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

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

image-20240115224941731

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

image-20240115225035736

没有任何问题!

结语

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

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

祝你好运!

  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不懂前端的运维不是好架构

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值