springboot学习(六十七) springboot项目通过gradle-docker-plugin插件构建为doker镜像并推送至镜像私服

  • Post author:
  • Post category:其他





前言

springboot从2.4默认提供了打镜像的gradle插件,但通过此插件没找到能设置基础镜像的方式,参见:

https://blog.csdn.net/u011943534/article/details/112136459

,下面介绍一种通过第三方插件打镜像并推送至镜像私服的方式



1、使用gradle部署springboot项目



2、Docker开启远程访问

参考:

https://blog.csdn.net/u011943534/article/details/112134818



3、安装镜像私服Harbor

参考:

https://blog.csdn.net/u011943534/article/details/110918562



4、gradle中配置插件

buildscript中引入插件

buildscript {
    repositories {
        ……
        mavenCentral()

    }
    dependencies {
        classpath "com.bmuschko:gradle-docker-plugin:6.7.0"
    }
}

插件官网:

https://bmuschko.github.io/gradle-docker-plugin

项目路径下的gradle.properties中添加版本信息:

dockerRemoteAddr=tcp://172.16.10.190:2375
dockerRegistryUrl=172.16.10.160:88
dockerRegistryUsername=admin
dockerRegistryPassword=Harbor12345

添加配置:

apply plugin: 'com.bmuschko.docker-remote-api'
apply plugin: 'com.bmuschko.docker-spring-boot-application'
……
dockerCreateDockerfile {
    instruction 'RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone'
    environmentVariable 'TimeZone', 'Asia/Shanghai'
    environmentVariable 'myenv', 'this is my test'
}

docker {
    url = "${dockerRemoteAddr}"
    springBootApplication {
        baseImage = "${dockerRegistryUrl}/library/oneclick/openjdk:11-jdk-oracle"
        maintainer = 'newframe'
        ports = [6001, 8719]
        images = ["${dockerRegistryUrl}/library/${rootProject.name}/${project.name}:${version}"]
        jvmArgs = ['-Djava.security.egd=file:/dev/./urandom']
        mainClassName = "com.iscas.business.product.ProductApp"
    }
    registryCredentials {
        url = "http://${dockerRegistryUrl}"
        username = "${dockerRegistryUsername}"
        password = "${dockerRegistryPassword}"
    }
}


com.bmuschko.docker-remote-api



com.bmuschko.docker-spring-boot-application

是两个插件,除了这俩,还有一个插件

com.bmuschko.docker-java-application

插件 说明
com.bmuschko.docker-remote-api 提供自定义任务以通过其远程 API 与 Docker 交互
com.bmuschko.docker-java-application 为 Java 应用程序创建并推送 Docker 映像
com.bmuschko.docker-spring-boot-application 为 Spring Boot 应用程序创建并推送 Docker 映像


springBootApplication

对应springboot的一些配置:

属性名 类型 默认值 描述
baseImage String openjdk:jre-alpine docker基础镜像
maintainer String 系统属性”user.name” 镜像的maintainer
ports List [8080] 容器暴露的端口
images List [<project.group>/:<project.version>] build和push的镜像名称
jvmArgs List [] jvm参数
mainClassName String classpath中唯一的主类 用于启动应用程序的主类名。 如果您的源代码包含多个主类文件,则为此选项设置显式值很有用。


url

对应远程docker API地址


registryCredentials

对应要推送的远程镜像私服地址和用户名密码。

执行

dockerBuildImage

命令,构建此工程为Docker镜像,执行dockerPushImage命令,将项目构建为Docker镜像,并推送至远程镜像私服。

在这里插入图片描述



版权声明:本文为u011943534原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。