应用上K8S:Gradle打包

需求

对于spring boot项目我们一般使用Maven或Gradle进行编译打包,也可以借助docker plugin进行镜像打包并push到远程仓库。因此在经过《Docker随时随地玩转变量》一文,我们已经确定了Dockerfile,那么应用上K8S第二步:gradle打包就可以开始了。

现在我们就来介绍下gradle打包,大家感兴趣的话也可以和maven打包对比下,并进一步掌握这两种方式。

gradle docker plugin

1.https://plugins.gradle.org/plugin/com.palantir.docker
2.https://github.com/palantir/gradle-docker

1.官方标准接入项目

# vim build.gradle

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "com.palantir.gradle.docker:gradle-docker:0.34.0"
  }
}

apply plugin: "com.palantir.docker"

2.自定义接入



buildscript {
  repositories {
    maven {
      mavenLocal()
      // 接入内部私服仓库
      url "http://nexus.xxxx.net/repository/public"
    }
  }
  dependencies {
    // 插件所在路径
    classpath "com.palantir.gradle.docker:gradle-docker:0.34.0"
  }
}
// 应用插件
apply plugin: "com.palantir.docker"

// docker打包
docker {
    // Dockerfile文件,默认在项目根目录
    dockerfiel file('Dockerfile')
    // 内部harbor仓库
    name "harbor.xxx.net/public/$project.name:$project.version"
    file jar.archivePath
    // 使用双引号
    buildArgs([JAR_FILE: "$jar.archivePath"])   
}

# vim Dockerfile
#基础镜像java 1.8
From java
#匿名数据卷,在启动容器时忘记挂载数据卷,会自动挂载到匿名卷
VOLUME /tmp
ARG JAR_FILE
ARG APP_NAME
ENV APP_NAME=${APP_NAME}
COPY ${JAR_FILE} ${APP_NAME}.jar
ENTRYPOINT ["/bin/sh","-c","java -Dapp.name=${APP_NAME}  ${JVM_OPTS} -jar /${APP_NAME}.jar"]

我们将应用名、JVM参数作为环境变量单独提取出来,用于docker参数化构建;也在后续在K8S中以configmap或env的形式进行参数传递。

注意:ARG只在Dockerfile中生效,且在docker build阶段生效。

3.编译打包

# 只本地打包
gradle clean build -x test docker -i

# 本地打包并push仓库
gradle clean build -x test dockerPush -i

# 注意:push前,现登录harbor保存密钥
docker login harbor.xxx.net

总结

相对于Maven打包过程,Gradle打包的配置更简单,但是其官网文档对gradle docker plugin的描述过于简单,导致某些更细节的配置摸索起来比较麻烦。

另,经过以上过程,我们需要对镜像打包过程定义一些规范,例如:

  • 应用名不能够用大写;
  • 镜像名及tag以应用名+版本号进行定义;
  • JVM参数根据实际情况需进一步拆分,以便后续通过环境变量进行参数化构建;
  • 其他应用运行依赖的配置、数据等目录,需进一步定义;
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值