springboot学习(三十五) springboot2.4.0+gradle将服务打包为镜像推送至harbor镜像私服

Springboot2.4更新后提供了Spring Boot Maven 插件的 spring-boot:build-image 指令和 Gradle 插件的 bootBuildImage 任务现在可以直接发布 Docker 镜像到 Docker 注册中心了。
下面介绍Gradle的bootBuildImage方式

从网上找到一个图能说明这个过程
在这里插入图片描述

开发机器可以是windows系统,不安装docker,使用一个中间机器运行docker,实现docker的打包和发送。

1、docker机器开启远程访问
参阅我之前的文章:https://blog.csdn.net/u011943534/article/details/112134818

2、将harbor服务器的地址配置到daemon.json中支持http访问

vi /etc/docker/daemon.json

在这里插入图片描述
3、使用gradle创建springboot项目
创建过程略

4、build.xml添加bootBuildImage任务

bootBuildImage {
    imageName = "192.168.100.96:80/library/${project.name}:0.0.1" //发布到harbor的镜像名称
    publish = true //是否发布
    docker {
        host = "tcp://192.168.100.91:2375" //中间docker宿主机的地址
        tlsVerify = false
//        certPath = "/home/users/.minikube/certs"
        publishRegistry {
            username = "admin" //harbor用户名
            password = "Harbor12345" //harbor密码
            url = "http://192.168.100.96" //harbor地址
            email = "76775081@qq.com" //邮箱
        }
    }
}

5、运行
运行gradle bootBuildImage 或在idea中点击运行bootBuildImage任务
第一次运行要下载依赖的镜像等,过程可能有点长
控制台输出:

16:06:01: Executing task 'bootBuildImage'...

> Task :compileJava UP-TO-DATE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :bootJarMainClassName UP-TO-DATE
> Task :bootJar UP-TO-DATE

> Task :bootBuildImage
Building image '192.168.100.96:80/library/test2:0.0.1'

 > Pulling builder image 'docker.io/paketobuildpacks/builder:base' ..................................................
 > Pulled builder image 'paketobuildpacks/builder@sha256:984a3684db80a6d53214b81a9f21c31529bede5b447d6d6d82d94cd6734d2424'
 > Pulling run image 'docker.io/paketobuildpacks/run:base-cnb' ..................................................
 > Pulled run image 'paketobuildpacks/run@sha256:f393fa2927a2619a10fc09bb109f822d20df909c10fed4ce3c36fad313ea18e3'
 > Executing lifecycle version v0.10.1
 > Using build cache volume 'pack-cache-a271a2f39a50.build'

 > Running creator
    [creator]     ===> DETECTING
    [creator]     5 of 18 buildpacks participating
    [creator]     paketo-buildpacks/ca-certificates   1.0.1
    [creator]     paketo-buildpacks/bellsoft-liberica 6.0.0
    [creator]     paketo-buildpacks/executable-jar    3.1.3
    [creator]     paketo-buildpacks/dist-zip          2.2.2
    [creator]     paketo-buildpacks/spring-boot       3.5.0
    [creator]     ===> ANALYZING
    [creator]     Restoring metadata for "paketo-buildpacks/ca-certificates:helper" from app image
    [creator]     Restoring metadata for "paketo-buildpacks/bellsoft-liberica:jvmkill" from app image
    [creator]     Restoring metadata for "paketo-buildpacks/bellsoft-liberica:helper" from app image
    [creator]     Restoring metadata for "paketo-buildpacks/bellsoft-liberica:java-security-properties" from app image
    [creator]     Restoring metadata for "paketo-buildpacks/bellsoft-liberica:jre" from app image
    [creator]     Restoring metadata for "paketo-buildpacks/executable-jar:class-path" from app image
    [creator]     Restoring metadata for "paketo-buildpacks/spring-boot:helper" from app image
    [creator]     Restoring metadata for "paketo-buildpacks/spring-boot:spring-cloud-bindings" from app image
    [creator]     Restoring metadata for "paketo-buildpacks/spring-boot:web-application-type" from app image
    [creator]     ===> RESTORING
    [creator]     ===> BUILDING
    [creator]     
    [creator]     Paketo CA Certificates Buildpack 1.0.1
    [creator]       https://github.com/paketo-buildpacks/ca-certificates
    [creator]       Launch Helper: Reusing cached layer
    [creator]     
    [creator]     Paketo BellSoft Liberica Buildpack 6.0.0
    [creator]       https://github.com/paketo-buildpacks/bellsoft-liberica
    [creator]       Build Configuration:
    [creator]         $BP_JVM_VERSION              11.*            the Java version
    [creator]       Launch Configuration:
    [creator]         $BPL_JVM_HEAD_ROOM           0               the headroom in memory calculation
    [creator]         $BPL_JVM_LOADED_CLASS_COUNT  35% of classes  the number of loaded classes in memory calculation
    [creator]         $BPL_JVM_THREAD_COUNT        250             the number of threads in memory calculation
    [creator]         $JAVA_TOOL_OPTIONS                           the JVM launch flags
    [creator]       BellSoft Liberica JRE 11.0.9: Reusing cached layer
    [creator]       Launch Helper: Reusing cached layer
    [creator]       JVMKill Agent 1.16.0: Reusing cached layer
    [creator]       Java Security Properties: Reusing cached layer
    [creator]     
    [creator]     Paketo Executable JAR Buildpack 3.1.3
    [creator]       https://github.com/paketo-buildpacks/executable-jar
    [creator]       Process types:
    [creator]         executable-jar: java org.springframework.boot.loader.JarLauncher
    [creator]         task:           java org.springframework.boot.loader.JarLauncher
    [creator]         web:            java org.springframework.boot.loader.JarLauncher
    [creator]     
    [creator]     Paketo Spring Boot Buildpack 3.5.0
    [creator]       https://github.com/paketo-buildpacks/spring-boot
    [creator]       Creating slices from layers index
    [creator]         dependencies
    [creator]         spring-boot-loader
    [creator]         snapshot-dependencies
    [creator]         application
    [creator]       Launch Helper: Reusing cached layer
    [creator]       Web Application Type: Reusing cached layer
    [creator]       Spring Cloud Bindings 1.7.0: Reusing cached layer
    [creator]       4 application slices
    [creator]       Image labels:
    [creator]         org.springframework.boot.spring-configuration-metadata.json
    [creator]         org.springframework.boot.version
    [creator]     ===> EXPORTING
    [creator]     Reusing layer 'paketo-buildpacks/ca-certificates:helper'
    [creator]     Reusing layer 'paketo-buildpacks/bellsoft-liberica:helper'
    [creator]     Reusing layer 'paketo-buildpacks/bellsoft-liberica:java-security-properties'
    [creator]     Reusing layer 'paketo-buildpacks/bellsoft-liberica:jre'
    [creator]     Reusing layer 'paketo-buildpacks/bellsoft-liberica:jvmkill'
    [creator]     Reusing layer 'paketo-buildpacks/executable-jar:class-path'
    [creator]     Reusing layer 'paketo-buildpacks/spring-boot:helper'
    [creator]     Reusing layer 'paketo-buildpacks/spring-boot:spring-cloud-bindings'
    [creator]     Reusing layer 'paketo-buildpacks/spring-boot:web-application-type'
    [creator]     Reusing 5/5 app layer(s)
    [creator]     Reusing layer 'launcher'
    [creator]     Reusing layer 'config'
    [creator]     Reusing layer 'process-types'
    [creator]     Adding label 'io.buildpacks.lifecycle.metadata'
    [creator]     Adding label 'io.buildpacks.build.metadata'
    [creator]     Adding label 'io.buildpacks.project.metadata'
    [creator]     Adding label 'org.springframework.boot.spring-configuration-metadata.json'
    [creator]     Adding label 'org.springframework.boot.version'
    [creator]     Setting default process type 'web'
    [creator]     *** Images (71860355d2cc):
    [creator]           192.168.100.96:80/library/test2:0.0.1

Successfully built image '192.168.100.96:80/library/test2:0.0.1'

 > Pushing image '192.168.100.96:80/library/test2:0.0.1' ..................................................
 > Pushed image '192.168.100.96:80/library/test2:0.0.1'

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.5/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 34s
4 actionable tasks: 1 executed, 3 up-to-date
16:06:36: Task execution finished 'bootBuildImage'.

6、登录harbor查看刚发布的镜像
在这里插入图片描述

Spring Boot 多模块项目结构一般如下: ``` ├── parent │ ├── module1 │ ├── module2 │ └── pom.xml ├── pom.xml └── README.md ``` 其中,`parent` 为父项目,`module1` 和 `module2` 为子模块。 在实际开发中,每个子模块都会有自己的 `pom.xml` 文件,并且通过 `parent` 模块的 `pom.xml` 进行统一管理。 Gradle 是一款基于 Groovy 的构建工具,类似于 Maven。Gradle 也可以用于构建 Spring Boot 多模块项目。 Gradle 的多模块项目结构与 Maven 类似,也是一个包含多个子项目的根目录,每个子项目有自己的 build.gradle 文件。 下面是一个简单的 Gradle 多模块项目结构: ``` ├── build.gradle ├── settings.gradle ├── module1 │ └── build.gradle └── module2 └── build.gradle ``` 其中,根目录下的 `build.gradle` 和 `settings.gradle` 分别用于配置整个项目和所有子项目的基本信息,每个子项目有自己的 `build.gradle` 配置文件。 关于 Gradle 如何打包 Spring Boot 多模块项目,可以参考下面的示例: ``` plugins { id 'org.springframework.boot' version '2.4.0' id 'io.spring.dependency-management' version '1.0.10.RELEASE' } group = 'com.example' version = '0.0.1-SNAPSHOT' java.sourceCompatibility = '11' subprojects { apply plugin: 'java' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' group = 'com.example' version = '0.0.1-SNAPSHOT' java.sourceCompatibility = '11' repositories { mavenCentral() } dependencies { implementation platform('org.springframework.boot:spring-boot-dependencies:2.4.0') implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' } } task packageAll(type: Zip) { baseName = 'my-application' version = '' destinationDir = file("$buildDir/distributions") from subprojects.output } ``` 在上述示例中,使用了 Gradle 的 `subprojects` 语法,对所有子项目进行了统一配置,并且定义了一个名为 `packageAll` 的任务,用于打包所有子项目的输出文件。执行 `gradle packageAll` 命令即可生成包含所有子项目输出文件的 zip 包。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值