我有以下 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",
)
)
}
我尝试过的:
我通过升级到 Kamal 2“解决”了我的主要问题,该版本不依赖于容器映像中可用的curl。
这仍然没有回答这个问题,特别是关于如何通过创建不太准系统的映像来使用 Paketo 构建包“不太优化”来制作容器映像。