栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

springboot官网推荐:使用docker构建springboot镜像(4)最佳实践——使用构建插件

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot官网推荐:使用docker构建springboot镜像(4)最佳实践——使用构建插件

文章目录
  • 一、文章推荐
  • 二、Spring Boot Maven和Gradle自带构建插件
  • 三、maven插件-Spotify Maven Plugin
  • 四、gradle插件-Palantir Gradle Plugin
  • 引用

一、文章推荐

springboot官网推荐:使用docker构建springboot镜像
springboot官网推荐:使用docker构建springboot镜像(2)最佳实践
springboot官网推荐:使用docker构建springboot镜像(3)最佳实践

在上面推荐的文章中,我们都是通过调用docker命令来构建镜像的。如果我们不想在构建中直接调用docker,那么Maven和Gradle有一套丰富的插件可以帮我们完成这项工作。

二、Spring Boot Maven和Gradle自带构建插件

只要有Docker环境就行,我们就可以使用Maven或者Gradle的Spring Boot构建插件来创建容器镜像。这些插件使用云原生构建包创建OCI映像(与docker build创建的格式相同),这样我们就不需要编写Dockerfile。

这些默认的构建器针对Spring Boot应用程序进行了优化,并且像《springboot官网推荐:使用docker构建springboot镜像(3)最佳实践》的例子一样,图像被有效地分层。

比如,我们可以在不修改pom.xml 或者build.gradle的情况下,进项镜像构建。
Maven:

./mvnw spring-boot:build-image -Dspring-boot.build-image.imageName=myorg/myapp

maven方式官网地址:https://docs.spring.io/spring-boot/docs/current/maven-plugin/reference/htmlsingle/#build-image

Gradle

./gradlew bootBuildImage --imageName=myorg/myapp

gradle方式官网地址:https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/#build-image

以上两种方式第一次构建可能需要很长时间,因为它必须下载一些容器镜像和JDK,但后续构建应该很快。

除了上面maven和gradle自带的构建方式,还有其他的权限。

三、maven插件-Spotify Maven Plugin

Spotify Maven是一个流行插件。这个插件需要我们编写dockerfile,然后为我们运行docker。

dockerfile

FROM openjdk:8-jdk-alpine as build
WORKDIR /workspace/app

COPY mvnw .
COPY .mvn .mvn
RUN ./mvnw -v
COPY pom.xml .
COPY src src

RUN ./mvnw install -DskipTests
RUN mkdir -p target/dependency && (cd target/dependency; jar -xf ../*.jar)

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG DEPENDENCY=/workspace/app/target/dependency
COPY --from=build ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY --from=build ${DEPENDENCY}/META-INF /app/META-INF
COPY --from=build ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","hello.Application"]

构建镜像:

mvn com.spotify:dockerfile-maven-plugin:build

但是此时,我们建立了一个匿名的docker形象。
我们可以通过命令行或者修改pom的方式设置镜像名称和tag
命令行方式:

#tag 默认为laster
mvn com.spotify:dockerfile-maven-plugin:build -Ddockerfile.repository=myorg/myapp
# tag=1.0
mvn com.spotify:dockerfile-maven-plugin:build -Ddockerfile.repository=myorg/myapp -Ddockerfile.tag=1.0

修改pom的方式:


    
        
            com.spotify
            dockerfile-maven-plugin
            1.4.8
            
                myorg/${project.artifactId}
                 ${project.version}
            
        
    

四、gradle插件-Palantir Gradle Plugin

Palantir Gradle插件需要配合Dockerfile一起工作。如果需要还可以为您生成Dockerfile。

首先修改build.gradle ,引入插件,

buildscript {
    ...
    dependencies {
        ...
        classpath('gradle.plugin.com.palantir.gradle.docker:gradle-docker:0.13.0')
    }
}

然后应用插件并调用其任务

apply plugin: 'com.palantir.docker'

group = 'myorg'

bootJar {
    baseName = 'myapp'
    version =  '0.1.0'
}

task unpack(type: Copy) {
    dependsOn bootJar
    from(zipTree(tasks.bootJar.outputs.files.singleFile))
    into("build/dependency")
}
docker {
    name "${project.group}/${bootJar.baseName}"
    copySpec.from(tasks.unpack.outputs).into("dependency")
    buildArgs(['DEPENDENCY': "dependency"])
}

构建镜像:

./gradlew clean build docker -x test
引用

Spotify Maven Plugin

The Palantir Gradle Plugin

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/854926.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号