无法使用 `docker exec` 连接到 Spring Boot 应用程序的 Docker 容器

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

复制者

启动项目后,无法使用

docker exec -it sb-repro [bash | sh]
连接到容器。错误:

OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown

有可用的外壳吗?或者是否需要在here显式添加一些构建包?

spring-boot docker docker-image buildpack paketo
1个回答
0
投票

为了构建容器镜像,您使用了这个特定的构建包

buildpacks.set(listOf("gcr.io/paketo-buildpacks/java-native-image"))

并且您还使用了 GraalVM Native 构建工具

id("org.graalvm.buildtools.native")

如果您查看 Gradle Spring Boot 插件文档,您会注意到使用构建工具会使插件使用

paketobuildpacks/builder-jammy-tiny:latest
而不是
paketobuildpacks/builder-jammy-base:latest
:

paketobuildpacks/builder-jammy-base:latest 或 paketobuildpacks/builder-jammy-tiny:latest 当应用 GraalVM Native Image 插件时。

并且为了使图像尺寸更小,

tiny
变体没有嵌入常见的Unix工具,例如
bash
sh
- 这使得构建的图像更加安全(更小的攻击面) - 但可调试性也较差.. .

我建议您使用

paketobuildpacks/builder-jammy-base:latest
基础映像进行调试,并使用

运行您的构建
./gradlew --builder paketobuildpacks/builder-jammy-base:latest bootBuildImage

或更新您的

build.gradle.kts

tasks.withType<BootBuildImage> {
    builder.set("paketobuildpacks/builder-jammy-base:latest")
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.