Google JIB创建的Docker Image不包括spring-rest文档的asciidoc



我使用Spring Rest Docs和JIB

当我做CCD_ 1和CCD_。我可以在example.com/docs/asciidocname.html上获得spring-rest文档生成的api文档。

但是具有CCD_ 4的docker图像不包含该url。

当我做./gradlew jib时,我想得到Spring Rest Docs生成的Api文档

下面是我的build.gradle的一部分

plugins {
id "org.asciidoctor.convert" version "2.4.0"
id "com.google.cloud.tools.jib" version "2.5.0"
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
asciidoctor
}
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://repo.spring.io/snapshot' }
}
sourceCompatibility = '11'
dependencies {
/**
* RestDocs
*/
asciidoctor 'org.springframework.restdocs:spring-restdocs-asciidoctor'
testImplementation('org.springframework.restdocs:spring-restdocs-mockmvc')
}
test {
useJUnitPlatform {
includeEngines 'junit-jupiter'
}
}
/*************************
* Rest Docs
*************************/
asciidoctor {
dependsOn test
}
bootJar {
dependsOn asciidoctor
from ("${asciidoctor.outputDir}/html5") {
into 'static/docs'
}
}

您已将bootJar任务配置为依赖于asciidoctor任务,并包含生成的HTML文件:

bootJar {
dependsOn asciidoctor
from ("${asciidoctor.outputDir}/html5") {
into 'static/docs'
}
}

Jib在构建容器映像时不使用jar文件,因此需要向Jib添加类似的配置。

让我们先来看看如何让它包含生成的HTML。它提供了一个名为jib的扩展,您可以在其中使用./gradlew build0来执行此操作:

jib {
extraDirectories {
paths {
path {
from = "${asciidoctor.outputDir}/html5"
into = "/app/resources/static/docs"
}
}
}
}

您可以在其Gradle插件的文档中了解更多关于向Jib生成的图像添加文件的信息。

现在我们需要将jib任务配置为依赖于asciidoctor任务。这样可以确保在Jib尝试将HTML包含在图像中之前生成HTML。由于扩展和任务都被命名为jib,我们需要明确地引用任务:

tasks.named('jib') {
dependsOn asciidoctor
}

如果您将镜像构建到本地Docker守护进程,您可能也需要jibDockerBuild任务的类似配置:

jibDockerBuild {
dependsOn asciidoctor
}

我找到了另一种方法。

首先。JIB通过java -cp命令执行一个主java类。未打包的.jar文件。

和ascidctor任务将html文件复制到jar文件中。

我可以在jib-gradlegithub找到选择。

  1. 如果使用containerizingMode = 'packaged'选项。它将在docker容器中构建jar文件并执行CCD_ 18命令
  2. 具有该选项的CCD_ 19任务将执行CCD_

所以我将bootJar任务复制到jar任务中并使用该选项。它的效果很好

相关内容

  • 没有找到相关文章

最新更新