如何将curl包含在使用Paketo Buildpacks的bootbuildimage(spring boot)构建的映像中

问题描述 投票:0回答:1

我有以下 Dockerfile 和 bootBuildImage gradle 任务的自定义部分。

我的目标是构建一个包含curl的图像(和一个最小的shell,我认为是/bin/sh来执行)。

我使用 Kamal 部署工具来部署容器化应用程序。部署工具在启动应用程序容器后使用curl进行健康检查。

当我使用 Dockerfile(默认)进行部署时,一切正常。因为 amazoncorretto:23 中包含了curl。

但是对于使用 bootBuildImage 构建的默认容器映像失败(创建的容器映像要小得多,在我的应用程序中为 200MB 而不是 300MB)。

我不明白如何自定义 bootBuildImage 任务以使用curl 生成图像。

FROM amazoncorretto:23
WORKDIR /app
COPY customerservice/build/libs/A-0.0.1.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

// creates smaller docker images, buildpacks
tasks.named<org.springframework.boot.gradle.tasks.bundling.BootBuildImage>("bootBuildImage") {
    imageName.set("U/A:latest")
    publish.set(true)
    docker {
        publishRegistry {
            username = "U"
            password = System.getenv("DOCKER_REGISTRY_TOKEN")
        }
    }
    builder= "paketobuildpacks/builder-jammy-full:latest"
    environment.set(
        mapOf(
            "BP_IMAGE_LABELS" to "service=\"A\"",
            "BP_JVM_VERSION" to "23",
        )
    )
}

我尝试过的:

  • 看看是否有一些环境变量需要包含更多
  • builder=“paketobuildpacks/builder-jammy-full:latest”,使用另一个构建器,例如我想使用 jammy-full 构建器,因为它包含curl,也许最终的输出图像包含curl,但这似乎并不包含就这样吧
  • 我尝试设置 runImage.set("amazoncorretto:23"),但也失败了。
spring-boot docker containers buildpack kamal
1个回答
0
投票

我通过升级到 Kamal 2“解决”了我的主要问题,该版本不依赖于容器映像中可用的curl。

这仍然没有回答这个问题,特别是关于如何通过创建不太准系统的映像来使用 Paketo 构建包“不太优化”来制作容器映像。

© www.soinside.com 2019 - 2024. All rights reserved.