jib打包spring boot项目生成docker镜像

699 阅读1分钟

1. 安装jib插件

buildscript {
    repositories {
        mavenLocal()
        maven {
            url 'https://repo.huaweicloud.com/repository/maven/'
        }
    }
    dependencies {
        classpath('com.google.cloud.tools:jib-layer-filter-extension-gradle:0.1.0')
    }
}

plugins {
    id 'java'
    id 'java-library' // api implementation
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'org.springframework.boot' version '2.6.3'
    id 'com.google.cloud.tools.jib' version '3.2.0' apply false
}

在需要打包镜像的项目应用插件

jib {
    pluginExtensions {
        pluginExtension {
            implementation = 'com.google.cloud.tools.jib.gradle.extension.layerfilter.JibLayerFilterExtension'
            configuration {
                filters {
                    filter {
                        glob = '/app/libs/spring-*.jar'
                        toLayer = 'spring'
                    }
                    filter {
                        glob = '/app/libs/netty-*.jar'
                        toLayer = 'netty'
                    }
                    filter {
                        glob = '/app/libs/sentinel-*.jar'
                        toLayer = 'sentinel'
                    }
                    filter {
                        glob = '/app/libs/nacos-*.jar'
                        toLayer = 'nacos'
                    }
                    filter {
                        glob = '/app/libs/*-plain.jar'
                        toLayer = 'plain'
                    }
                }
            }
        }
    }

    from {
        image = "openjdk@sha256:39818a12ae215ab9f9463b312696696b941b59598913041f575582e67bbb917d"
        platforms {
            platform {
                architecture = 'amd64'
                os = 'linux'
            }
        }
    }

    to {
        image = "registry.cn-hangzhou.aliyuncs.com/f-boot/${project.name}"
        tags = ["${rootProject.version}"]
    }

    container {
        ports = ["8000"]
        creationTime = ZonedDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME)
    }
}

执行打包命令

gradle jibDockerBuild
> Task :gateway:jibDockerBuild
Running extension: com.google.cloud.tools.jib.gradle.extension.layerfilter.JibLayerFilterExtension
Running Jib Layer Filter Extension

Containerizing application to Docker daemon as registry.cn-hangzhou.aliyuncs.com/f-boot/gateway, registry.cn-hangzhou.aliyuncs.com/f-boot/gateway:1.0.0...

Container entrypoint set to [java, -cp, /app/resources:/app/classes:/app/libs/*, com.f.GatewayApplication]

Built image to Docker daemon as registry.cn-hangzhou.aliyuncs.com/f-boot/gateway, registry.cn-hangzhou.aliyuncs.com/f-boot/gateway:1.0.0
Executing tasks:
[==============================] 100.0% complete

查看镜像

docker images
REPOSITORY                                                 TAG         IMAGE ID       CREATED             SIZE
registry.cn-hangzhou.aliyuncs.com/f-boot/message-service   1.0.0       25ffab8435a9   About an hour ago   310MB
registry.cn-hangzhou.aliyuncs.com/f-boot/message-service   latest      25ffab8435a9   About an hour ago   310MB
registry.cn-hangzhou.aliyuncs.com/f-boot/sys-service       1.0.0       4a7d54e1d122   About an hour ago   330MB
registry.cn-hangzhou.aliyuncs.com/f-boot/sys-service       latest      4a7d54e1d122   About an hour ago   330MB
registry.cn-hangzhou.aliyuncs.com/f-boot/file-service      1.0.0       0df8ce1486c1   About an hour ago   314MB
registry.cn-hangzhou.aliyuncs.com/f-boot/file-service      latest      0df8ce1486c1   About an hour ago   314MB
registry.cn-hangzhou.aliyuncs.com/f-boot/gateway           1.0.0       bffc69dc5bcc   About an hour ago   320MB
registry.cn-hangzhou.aliyuncs.com/f-boot/gateway           latest      bffc69dc5bcc   About an hour ago   320MB

查看项目