I use the following: Apple Macbook Pro M4 Pro (arm64) docker version 4.42.1 Springboot 3.5.4 Springboot Gradle plugin 3.5.4
In latest version of plugin a new error appears when trying to build image using bootBuildImage task.
I try to build amd64 image on my arm processor and I use the relatively new imagePlatform property.
When the plugin tries to pull the buildpacks requested and one of them is not found in the builder, it downloads it from docker hub.
In that case the plugin implements the docker calls (in DockerApi class) which are the equivalent of the following docker cli commands:
docker pull --platform <imagePlatform> <buildpack>
docker save <buildpack>
The problem is in the second command implementation, as it doesn't provide the requested platform.
In such case dockerd decides the platform is the host platform, which in my case is arm64 which doesn't match the pulled image platform.
Hence the plugin sends the following error:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':radius-core:bootBuildImage'.
> Invalid buildpack reference '<buildpack>'
I checked in dockerd related repos, and they do not seem to agree on a solution for the docker save command issue but require the command to include the --platform flag in that case.
I think this should also be fixed in Springboot DockerApi class so people with arm processors will be able to build amd images too.
I got an idea of a fix but I'm not sure how to propagate the platform to DockerApi. Can I get help on that matter?
Comment From: wilkinsona
Thanks for the report. Unfortunately, I don't think I understand the problem. The title describes what sounds like a broad problem with bootBuildImage on Apple Silicon. However, reading the description, it sounds like the problem only occurs when trying to build an amd64 image on an arm64 host. Can you please clarify? Ideally, the clarification would be in the form of a minimal reproducible example that we can run on an Apple Silicon Mac and see it fail in the way that you have described.
Comment From: ofirm93
Sure. He is example app:
The only difference I made from the initial repo generated by spring Initializr is to add to build.gradle the following gradle plugin configuration:
bootBuildImage {
builder = "paketobuildpacks/builder-noble-java-tiny@sha256:7d2fdc07afb6d54cd5dd61fb466c966dd9f3dc1dd133ffd3714ddf086000b773"
imageName = "demo:v1"
environment = [
"BP_OPENTELEMETRY_ENABLED" : "true",
]
imagePlatform = "linux/amd64"
buildpacks = [
'paketobuildpacks/java',
'paketobuildpacks/opentelemetry:2'
]
}
Comment From: wilkinsona
Thanks for the sample, it configures quite a bit more than originally described and didn't initially fail as you'd described so I've walked through various permutations in an effort to figure out what's happening.
Removing the customisation of bootBuildImage entirely and starting with a clean slate (docker system prune --all --force) results in a successful build.
I then configured the imagePlaform:
bootBuildImage {
imagePlatform = "linux/amd64"
}
This causes the build to fail:
> Task :bootBuildImage
Building image 'docker.io/library/demo:0.0.1-SNAPSHOT'
> Pulling builder image 'docker.io/paketobuildpacks/builder-noble-java-tiny:latest' for platform 'linux/amd64' ..................................................
> Pulled builder image 'paketobuildpacks/builder-noble-java-tiny@sha256:ae0cd71a4e28e3c3ba07fc409d197f04d28ed321910a2474eeb496e37d6ecc05'
> Task :bootBuildImage FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':bootBuildImage'.
> Image platform mismatch detected. The configured platform 'linux/amd64' is not supported by the image 'docker.io/paketobuildpacks/builder-noble-java-tiny:latest'. Requested platform 'linux/amd64' but got 'linux/arm64'
I think this is because the previous build using the host platform (linux/arm64) has "polluted" the daemon, getting things into a state where the linux/arm64 arch becomes unavailable. Going back to a clean slate and re-running the build results in a different failure, this time when trying to save the built image:
> Task :bootBuildImage
Building image 'docker.io/library/demo:0.0.1-SNAPSHOT'
> Pulling builder image 'docker.io/paketobuildpacks/builder-noble-java-tiny:latest' for platform 'linux/amd64' ..................................................
> Pulled builder image 'paketobuildpacks/builder-noble-java-tiny@sha256:ae0cd71a4e28e3c3ba07fc409d197f04d28ed321910a2474eeb496e37d6ecc05'
> Pulling run image 'docker.io/paketobuildpacks/ubuntu-noble-run-tiny:0.0.21' for platform 'linux/amd64' ..................................................
> Pulled run image 'paketobuildpacks/ubuntu-noble-run-tiny@sha256:084c81f50c9619c5da73bd7310febf44437db8621c7563601989ef8839882bce'
> Executing lifecycle version v0.20.12
> Using build cache volume 'pack-cache-5cbe5692dbc4.build'
> Running creator
[creator] ===> ANALYZING
[creator] Image with name "docker.io/library/demo:0.0.1-SNAPSHOT" not found
[creator] ===> DETECTING
[creator] target distro name/version labels not found, reading /etc/os-release file
[creator] 6 of 26 buildpacks participating
[creator] paketo-buildpacks/ca-certificates 3.10.3
[creator] paketo-buildpacks/bellsoft-liberica 11.2.5
[creator] paketo-buildpacks/syft 2.17.0
[creator] paketo-buildpacks/executable-jar 6.13.2
[creator] paketo-buildpacks/dist-zip 5.10.2
[creator] paketo-buildpacks/spring-boot 5.33.3
[creator] ===> RESTORING
[creator] Restoring metadata for "paketo-buildpacks/syft:syft" from cache
[creator] Restoring metadata for "paketo-buildpacks/spring-boot:spring-cloud-bindings" from cache
[creator] Restoring data for "paketo-buildpacks/syft:syft" from cache
[creator] Restoring data for "paketo-buildpacks/spring-boot:spring-cloud-bindings" from cache
[creator] Restoring data for SBOM from cache
[creator] ===> BUILDING
[creator] target distro name/version labels not found, reading /etc/os-release file
[creator]
[creator] Paketo Buildpack for CA Certificates 3.10.3
[creator] https://github.com/paketo-buildpacks/ca-certificates
[creator] Build Configuration:
[creator] $BP_EMBED_CERTS false Embed certificates into the image
[creator] $BP_ENABLE_RUNTIME_CERT_BINDING true Deprecated: Enable/disable certificate helper layer to add certs at runtime
[creator] $BP_RUNTIME_CERT_BINDING_DISABLED false Disable certificate helper layer to add certs at runtime
[creator] Launch Helper: Contributing to layer
[creator] Creating /layers/paketo-buildpacks_ca-certificates/helper/exec.d/ca-certificates-helper
[creator]
[creator] Paketo Buildpack for BellSoft Liberica 11.2.5
[creator] https://github.com/paketo-buildpacks/bellsoft-liberica
[creator] Build Configuration:
[creator] $BP_JVM_JLINK_ARGS --no-man-pages --no-header-files --strip-debug --compress=1 configure custom link arguments (--output must be omitted)
[creator] $BP_JVM_JLINK_ENABLED false enables running jlink tool to generate custom JRE
[creator] $BP_JVM_TYPE JRE the JVM type - JDK or JRE
[creator] $BP_JVM_VERSION 21 the Java version
[creator] Launch Configuration:
[creator] $BPL_DEBUG_ENABLED false enables Java remote debugging support
[creator] $BPL_DEBUG_PORT 8000 configure the remote debugging port
[creator] $BPL_DEBUG_SUSPEND false configure whether to suspend execution until a debugger has attached
[creator] $BPL_HEAP_DUMP_PATH write heap dumps on error to this path
[creator] $BPL_JAVA_NMT_ENABLED true enables Java Native Memory Tracking (NMT)
[creator] $BPL_JAVA_NMT_LEVEL summary configure level of NMT, summary or detail
[creator] $BPL_JFR_ARGS configure custom Java Flight Recording (JFR) arguments
[creator] $BPL_JFR_ENABLED false enables Java Flight Recording (JFR)
[creator] $BPL_JMX_ENABLED false enables Java Management Extensions (JMX)
[creator] $BPL_JMX_PORT 5000 configure the JMX port
[creator] $BPL_JVM_HEAD_ROOM 0 the headroom in memory calculation
[creator] $BPL_JVM_LOADED_CLASS_COUNT 35% of classes the number of loaded classes in memory calculation
[creator] $BPL_JVM_THREAD_COUNT 250 the number of threads in memory calculation
[creator] $JAVA_TOOL_OPTIONS the JVM launch flags
[creator] Using Java version 21 extracted from MANIFEST.MF
[creator] BellSoft Liberica JRE 21.0.8: Contributing to layer
[creator] Downloading from https://github.com/bell-sw/Liberica/releases/download/21.0.8+12/bellsoft-jre21.0.8+12-linux-amd64.tar.gz
[creator] Verifying checksum
[creator] Expanding to /layers/paketo-buildpacks_bellsoft-liberica/jre
[creator] Adding 146 container CA certificates to JVM truststore
[creator] Writing env.launch/BPI_APPLICATION_PATH.default
[creator] Writing env.launch/BPI_JVM_CACERTS.default
[creator] Writing env.launch/BPI_JVM_CLASS_COUNT.default
[creator] Writing env.launch/BPI_JVM_SECURITY_PROVIDERS.default
[creator] Writing env.launch/JAVA_HOME.default
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.append
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.delim
[creator] Writing env.launch/MALLOC_ARENA_MAX.default
[creator] Launch Helper: Contributing to layer
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/java-opts
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/jvm-heap
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/link-local-dns
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/memory-calculator
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/security-providers-configurer
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/jmx
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/jfr
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/openssl-certificate-loader
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/security-providers-classpath-9
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/debug-9
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/nmt
[creator] Java Security Properties: Contributing to layer
[creator] Writing env.launch/JAVA_SECURITY_PROPERTIES.default
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.append
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.delim
[creator]
[creator] Paketo Buildpack for Syft 2.17.0
[creator] https://github.com/paketo-buildpacks/syft
[creator] Downloading from https://github.com/anchore/syft/releases/download/v1.28.0/syft_1.28.0_linux_amd64.tar.gz
[creator] Verifying checksum
[creator] Writing env.build/SYFT_CHECK_FOR_APP_UPDATE.default
[creator]
[creator] Paketo Buildpack for Executable JAR 6.13.2
[creator] https://github.com/paketo-buildpacks/executable-jar
[creator] Class Path: Contributing to layer
[creator] Writing env/CLASSPATH.delim
[creator] Writing env/CLASSPATH.prepend
[creator] Process types:
[creator] executable-jar: java org.springframework.boot.loader.launch.JarLauncher (direct)
[creator] task: java org.springframework.boot.loader.launch.JarLauncher (direct)
[creator] web: java org.springframework.boot.loader.launch.JarLauncher (direct)
[creator]
[creator] Paketo Buildpack for Spring Boot 5.33.3
[creator] https://github.com/paketo-buildpacks/spring-boot
[creator] Build Configuration:
[creator] $BPL_JVM_CDS_ENABLED false whether to enable CDS optimizations at runtime
[creator] $BPL_SPRING_AOT_ENABLED false whether to enable Spring AOT at runtime
[creator] $BP_JVM_CDS_ENABLED false whether to enable CDS & perform JVM training run
[creator] $BP_SPRING_AOT_ENABLED false whether to enable Spring AOT
[creator] $BP_SPRING_CLOUD_BINDINGS_DISABLED false whether to contribute Spring Boot cloud bindings support
[creator] $BP_SPRING_CLOUD_BINDINGS_VERSION 1 default version of Spring Cloud Bindings library to contribute
[creator] Launch Configuration:
[creator] $BPL_SPRING_CLOUD_BINDINGS_DISABLED false whether to auto-configure Spring Boot environment properties from bindings
[creator] $BPL_SPRING_CLOUD_BINDINGS_ENABLED true Deprecated - whether to auto-configure Spring Boot environment properties from bindings
[creator] Creating slices from layers index
[creator] dependencies (10.4 MB)
[creator] spring-boot-loader (458.0 KB)
[creator] snapshot-dependencies (0.0 B)
[creator] application (26.2 KB)
[creator] Spring Cloud Bindings 2.0.4: Reusing cached layer
[creator] Web Application Type: Contributing to layer
[creator] Non-web application detected
[creator] Writing env.launch/BPL_JVM_THREAD_COUNT.default
[creator] Launch Helper: Contributing to layer
[creator] Creating /layers/paketo-buildpacks_spring-boot/helper/exec.d/spring-cloud-bindings
[creator] 4 application slices
[creator] Image labels:
[creator] org.opencontainers.image.title
[creator] org.opencontainers.image.version
[creator] org.springframework.boot.version
[creator] ===> EXPORTING
[creator] Adding layer 'paketo-buildpacks/ca-certificates:helper'
[creator] Adding layer 'paketo-buildpacks/bellsoft-liberica:helper'
[creator] Adding layer 'paketo-buildpacks/bellsoft-liberica:java-security-properties'
[creator] Adding layer 'paketo-buildpacks/bellsoft-liberica:jre'
[creator] Adding layer 'paketo-buildpacks/executable-jar:classpath'
[creator] Adding layer 'paketo-buildpacks/spring-boot:helper'
[creator] Adding layer 'paketo-buildpacks/spring-boot:spring-cloud-bindings'
[creator] Adding layer 'paketo-buildpacks/spring-boot:web-application-type'
[creator] Adding layer 'buildpacksio/lifecycle:launch.sbom'
[creator] Added 5/5 app layer(s)
[creator] Adding layer 'buildpacksio/lifecycle:launcher'
[creator] Adding layer 'buildpacksio/lifecycle:config'
[creator] Adding layer 'buildpacksio/lifecycle:process-types'
[creator] Adding label 'io.buildpacks.lifecycle.metadata'
[creator] Adding label 'io.buildpacks.build.metadata'
[creator] Adding label 'io.buildpacks.project.metadata'
[creator] Adding label 'org.opencontainers.image.title'
[creator] Adding label 'org.opencontainers.image.version'
[creator] Adding label 'org.springframework.boot.version'
[creator] Setting default process type 'web'
[creator] Saving docker.io/library/demo:0.0.1-SNAPSHOT...
[creator] ERROR: failed to export: saving image: failed to fetch base layers: saving image with ID "sha256:084c81f50c9619c5da73bd7310febf44437db8621c7563601989ef8839882bce" from the docker daemon: Error response from daemon: unable to create manifests file: NotFound: content digest sha256:27a8cdfd06282af14980e596bdcf79c9281a69cea83021b95e686f33603f5300: not found
> Task :bootBuildImage FAILED
Next, I went back to a clean slate and tried again with the specific SHA of the builder:
bootBuildImage {
builder = "paketobuildpacks/builder-noble-java-tiny@sha256:7d2fdc07afb6d54cd5dd61fb466c966dd9f3dc1dd133ffd3714ddf086000b773"
}
This behaves as if the imagePlatform has been set to linux/amd64 and fails:
> Task :bootBuildImage
Building image 'docker.io/library/demo:0.0.1-SNAPSHOT'
> Pulling builder image 'docker.io/paketobuildpacks/builder-noble-java-tiny@sha256:7d2fdc07afb6d54cd5dd61fb466c966dd9f3dc1dd133ffd3714ddf086000b773' ..................................................
> Pulled builder image 'paketobuildpacks/builder-noble-java-tiny@sha256:7d2fdc07afb6d54cd5dd61fb466c966dd9f3dc1dd133ffd3714ddf086000b773'
> Pulling run image 'docker.io/paketobuildpacks/ubuntu-noble-run-tiny:0.0.21' for platform 'linux/amd64' ..................................................
> Pulled run image 'paketobuildpacks/ubuntu-noble-run-tiny@sha256:084c81f50c9619c5da73bd7310febf44437db8621c7563601989ef8839882bce'
> Executing lifecycle version v0.20.12
> Using build cache volume 'pack-cache-5cbe5692dbc4.build'
> Running creator
[creator] ===> ANALYZING
[creator] Image with name "docker.io/library/demo:0.0.1-SNAPSHOT" not found
[creator] ===> DETECTING
[creator] target distro name/version labels not found, reading /etc/os-release file
[creator] 6 of 26 buildpacks participating
[creator] paketo-buildpacks/ca-certificates 3.10.3
[creator] paketo-buildpacks/bellsoft-liberica 11.2.5
[creator] paketo-buildpacks/syft 2.17.0
[creator] paketo-buildpacks/executable-jar 6.13.2
[creator] paketo-buildpacks/dist-zip 5.10.2
[creator] paketo-buildpacks/spring-boot 5.33.3
[creator] ===> RESTORING
[creator] Restoring metadata for "paketo-buildpacks/syft:syft" from cache
[creator] Restoring metadata for "paketo-buildpacks/spring-boot:spring-cloud-bindings" from cache
[creator] Restoring data for "paketo-buildpacks/syft:syft" from cache
[creator] Restoring data for "paketo-buildpacks/spring-boot:spring-cloud-bindings" from cache
[creator] Restoring data for SBOM from cache
[creator] ===> BUILDING
[creator] target distro name/version labels not found, reading /etc/os-release file
[creator]
[creator] Paketo Buildpack for CA Certificates 3.10.3
[creator] https://github.com/paketo-buildpacks/ca-certificates
[creator] Build Configuration:
[creator] $BP_EMBED_CERTS false Embed certificates into the image
[creator] $BP_ENABLE_RUNTIME_CERT_BINDING true Deprecated: Enable/disable certificate helper layer to add certs at runtime
[creator] $BP_RUNTIME_CERT_BINDING_DISABLED false Disable certificate helper layer to add certs at runtime
[creator] Launch Helper: Contributing to layer
[creator] Creating /layers/paketo-buildpacks_ca-certificates/helper/exec.d/ca-certificates-helper
[creator]
[creator] Paketo Buildpack for BellSoft Liberica 11.2.5
[creator] https://github.com/paketo-buildpacks/bellsoft-liberica
[creator] Build Configuration:
[creator] $BP_JVM_JLINK_ARGS --no-man-pages --no-header-files --strip-debug --compress=1 configure custom link arguments (--output must be omitted)
[creator] $BP_JVM_JLINK_ENABLED false enables running jlink tool to generate custom JRE
[creator] $BP_JVM_TYPE JRE the JVM type - JDK or JRE
[creator] $BP_JVM_VERSION 21 the Java version
[creator] Launch Configuration:
[creator] $BPL_DEBUG_ENABLED false enables Java remote debugging support
[creator] $BPL_DEBUG_PORT 8000 configure the remote debugging port
[creator] $BPL_DEBUG_SUSPEND false configure whether to suspend execution until a debugger has attached
[creator] $BPL_HEAP_DUMP_PATH write heap dumps on error to this path
[creator] $BPL_JAVA_NMT_ENABLED true enables Java Native Memory Tracking (NMT)
[creator] $BPL_JAVA_NMT_LEVEL summary configure level of NMT, summary or detail
[creator] $BPL_JFR_ARGS configure custom Java Flight Recording (JFR) arguments
[creator] $BPL_JFR_ENABLED false enables Java Flight Recording (JFR)
[creator] $BPL_JMX_ENABLED false enables Java Management Extensions (JMX)
[creator] $BPL_JMX_PORT 5000 configure the JMX port
[creator] $BPL_JVM_HEAD_ROOM 0 the headroom in memory calculation
[creator] $BPL_JVM_LOADED_CLASS_COUNT 35% of classes the number of loaded classes in memory calculation
[creator] $BPL_JVM_THREAD_COUNT 250 the number of threads in memory calculation
[creator] $JAVA_TOOL_OPTIONS the JVM launch flags
[creator] Using Java version 21 extracted from MANIFEST.MF
[creator] BellSoft Liberica JRE 21.0.8: Contributing to layer
[creator] Downloading from https://github.com/bell-sw/Liberica/releases/download/21.0.8+12/bellsoft-jre21.0.8+12-linux-amd64.tar.gz
[creator] Verifying checksum
[creator] Expanding to /layers/paketo-buildpacks_bellsoft-liberica/jre
[creator] Adding 146 container CA certificates to JVM truststore
[creator] Writing env.launch/BPI_APPLICATION_PATH.default
[creator] Writing env.launch/BPI_JVM_CACERTS.default
[creator] Writing env.launch/BPI_JVM_CLASS_COUNT.default
[creator] Writing env.launch/BPI_JVM_SECURITY_PROVIDERS.default
[creator] Writing env.launch/JAVA_HOME.default
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.append
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.delim
[creator] Writing env.launch/MALLOC_ARENA_MAX.default
[creator] Launch Helper: Contributing to layer
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/java-opts
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/jvm-heap
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/link-local-dns
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/memory-calculator
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/security-providers-configurer
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/jmx
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/jfr
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/openssl-certificate-loader
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/security-providers-classpath-9
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/debug-9
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/nmt
[creator] Java Security Properties: Contributing to layer
[creator] Writing env.launch/JAVA_SECURITY_PROPERTIES.default
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.append
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.delim
[creator]
[creator] Paketo Buildpack for Syft 2.17.0
[creator] https://github.com/paketo-buildpacks/syft
[creator] Downloading from https://github.com/anchore/syft/releases/download/v1.28.0/syft_1.28.0_linux_amd64.tar.gz
[creator] Verifying checksum
[creator] Writing env.build/SYFT_CHECK_FOR_APP_UPDATE.default
[creator]
[creator] Paketo Buildpack for Executable JAR 6.13.2
[creator] https://github.com/paketo-buildpacks/executable-jar
[creator] Class Path: Contributing to layer
[creator] Writing env/CLASSPATH.delim
[creator] Writing env/CLASSPATH.prepend
[creator] Process types:
[creator] executable-jar: java org.springframework.boot.loader.launch.JarLauncher (direct)
[creator] task: java org.springframework.boot.loader.launch.JarLauncher (direct)
[creator] web: java org.springframework.boot.loader.launch.JarLauncher (direct)
[creator]
[creator] Paketo Buildpack for Spring Boot 5.33.3
[creator] https://github.com/paketo-buildpacks/spring-boot
[creator] Build Configuration:
[creator] $BPL_JVM_CDS_ENABLED false whether to enable CDS optimizations at runtime
[creator] $BPL_SPRING_AOT_ENABLED false whether to enable Spring AOT at runtime
[creator] $BP_JVM_CDS_ENABLED false whether to enable CDS & perform JVM training run
[creator] $BP_SPRING_AOT_ENABLED false whether to enable Spring AOT
[creator] $BP_SPRING_CLOUD_BINDINGS_DISABLED false whether to contribute Spring Boot cloud bindings support
[creator] $BP_SPRING_CLOUD_BINDINGS_VERSION 1 default version of Spring Cloud Bindings library to contribute
[creator] Launch Configuration:
[creator] $BPL_SPRING_CLOUD_BINDINGS_DISABLED false whether to auto-configure Spring Boot environment properties from bindings
[creator] $BPL_SPRING_CLOUD_BINDINGS_ENABLED true Deprecated - whether to auto-configure Spring Boot environment properties from bindings
[creator] Creating slices from layers index
[creator] dependencies (10.4 MB)
[creator] spring-boot-loader (458.0 KB)
[creator] snapshot-dependencies (0.0 B)
[creator] application (26.2 KB)
[creator] Spring Cloud Bindings 2.0.4: Reusing cached layer
[creator] Web Application Type: Contributing to layer
[creator] Non-web application detected
[creator] Writing env.launch/BPL_JVM_THREAD_COUNT.default
[creator] Launch Helper: Contributing to layer
[creator] Creating /layers/paketo-buildpacks_spring-boot/helper/exec.d/spring-cloud-bindings
[creator] 4 application slices
[creator] Image labels:
[creator] org.opencontainers.image.title
[creator] org.opencontainers.image.version
[creator] org.springframework.boot.version
[creator] ===> EXPORTING
[creator] Adding layer 'paketo-buildpacks/ca-certificates:helper'
[creator] Adding layer 'paketo-buildpacks/bellsoft-liberica:helper'
[creator] Adding layer 'paketo-buildpacks/bellsoft-liberica:java-security-properties'
[creator] Adding layer 'paketo-buildpacks/bellsoft-liberica:jre'
[creator] Adding layer 'paketo-buildpacks/executable-jar:classpath'
[creator] Adding layer 'paketo-buildpacks/spring-boot:helper'
[creator] Adding layer 'paketo-buildpacks/spring-boot:spring-cloud-bindings'
[creator] Adding layer 'paketo-buildpacks/spring-boot:web-application-type'
[creator] Adding layer 'buildpacksio/lifecycle:launch.sbom'
[creator] Added 5/5 app layer(s)
[creator] Adding layer 'buildpacksio/lifecycle:launcher'
[creator] Adding layer 'buildpacksio/lifecycle:config'
[creator] Adding layer 'buildpacksio/lifecycle:process-types'
[creator] Adding label 'io.buildpacks.lifecycle.metadata'
[creator] Adding label 'io.buildpacks.build.metadata'
[creator] Adding label 'io.buildpacks.project.metadata'
[creator] Adding label 'org.opencontainers.image.title'
[creator] Adding label 'org.opencontainers.image.version'
[creator] Adding label 'org.springframework.boot.version'
[creator] Setting default process type 'web'
[creator] Saving docker.io/library/demo:0.0.1-SNAPSHOT...
[creator] ERROR: failed to export: saving image: failed to fetch base layers: saving image with ID "sha256:084c81f50c9619c5da73bd7310febf44437db8621c7563601989ef8839882bce" from the docker daemon: Error response from daemon: unable to create manifests file: NotFound: content digest sha256:27a8cdfd06282af14980e596bdcf79c9281a69cea83021b95e686f33603f5300: not found
> Task :bootBuildImage FAILED
I'm not sure why it used the wrong platform. I looks like a bug in this particular version of the builder.
Going back to the default builder and a clean slate, I then tried customizing the buildpacks:
bootBuildImage {
environment = [
"BP_OPENTELEMETRY_ENABLED" : "true",
]
buildpacks = [
'paketobuildpacks/java',
'paketobuildpacks/opentelemetry:2'
]
}
This builds successfully.
Going back once again to a clean slate, I then tried also setting the image platform:
bootBuildImage {
environment = [
"BP_OPENTELEMETRY_ENABLED" : "true",
]
buildpacks = [
'paketobuildpacks/java',
'paketobuildpacks/opentelemetry:2'
]
imagePlatform = "linux/amd64"
}
This fails:
> Task :bootBuildImage
Building image 'docker.io/library/demo:0.0.1-SNAPSHOT'
> Pulling builder image 'docker.io/paketobuildpacks/builder-noble-java-tiny:latest' for platform 'linux/amd64' ..................................................
> Pulled builder image 'paketobuildpacks/builder-noble-java-tiny@sha256:ae0cd71a4e28e3c3ba07fc409d197f04d28ed321910a2474eeb496e37d6ecc05'
> Pulling run image 'docker.io/paketobuildpacks/ubuntu-noble-run-tiny:0.0.21' for platform 'linux/amd64' ..................................................
> Pulled run image 'paketobuildpacks/ubuntu-noble-run-tiny@sha256:084c81f50c9619c5da73bd7310febf44437db8621c7563601989ef8839882bce'
> Pulling buildpack image 'docker.io/paketobuildpacks/java:latest' for platform 'linux/amd64' ..................................................
> Pulled buildpack image 'paketobuildpacks/java@sha256:82a781939c0a2e1987bb305fed96d519ae452ecf0c3e380ce8a083dac47fb286'
> Pulling buildpack image 'docker.io/paketobuildpacks/opentelemetry:2' for platform 'linux/amd64' ..................................................
> Pulled buildpack image 'paketobuildpacks/opentelemetry@sha256:5ad8c8ffd824ce271ca749e3c883b544c8f22f7296f8c33f2dbffbc94de29b25'
> Task :bootBuildImage FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':bootBuildImage'.
> Invalid buildpack reference 'paketobuildpacks/opentelemetry:2'
This looks like the failure reported above.
Once last thing, I went back to a clean slate and tried the bootBuildImage configuration that was shared above:
bootBuildImage {
builder = "paketobuildpacks/builder-noble-java-tiny@sha256:7d2fdc07afb6d54cd5dd61fb466c966dd9f3dc1dd133ffd3714ddf086000b773"
imageName = "demo:v1"
environment = [
"BP_OPENTELEMETRY_ENABLED" : "true",
]
imagePlatform = "linux/amd64"
buildpacks = [
'paketobuildpacks/java',
'paketobuildpacks/opentelemetry:2'
]
}
It fails in the same way:
> Task :bootBuildImage
Building image 'docker.io/library/demo:v1'
> Pulling builder image 'docker.io/paketobuildpacks/builder-noble-java-tiny@sha256:7d2fdc07afb6d54cd5dd61fb466c966dd9f3dc1dd133ffd3714ddf086000b773' for platform 'linux/amd64' ..................................................
> Pulled builder image 'paketobuildpacks/builder-noble-java-tiny@sha256:7d2fdc07afb6d54cd5dd61fb466c966dd9f3dc1dd133ffd3714ddf086000b773'
> Pulling run image 'docker.io/paketobuildpacks/ubuntu-noble-run-tiny:0.0.21' for platform 'linux/amd64' ..................................................
> Pulled run image 'paketobuildpacks/ubuntu-noble-run-tiny@sha256:084c81f50c9619c5da73bd7310febf44437db8621c7563601989ef8839882bce'
> Pulling buildpack image 'docker.io/paketobuildpacks/java:latest' for platform 'linux/amd64' ..................................................
> Pulled buildpack image 'paketobuildpacks/java@sha256:82a781939c0a2e1987bb305fed96d519ae452ecf0c3e380ce8a083dac47fb286'
> Pulling buildpack image 'docker.io/paketobuildpacks/opentelemetry:2' for platform 'linux/amd64' ..................................................
> Pulled buildpack image 'paketobuildpacks/opentelemetry@sha256:5ad8c8ffd824ce271ca749e3c883b544c8f22f7296f8c33f2dbffbc94de29b25'
> Task :bootBuildImage FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':bootBuildImage'.
> Invalid buildpack reference 'paketobuildpacks/opentelemetry:2'
I think I've reproduced the originally reported failure. Depending on the state of the Docker Daemon, doing so may require removing existing buildpack-related images. If existing buildpack-related images are left in place, a different failure may occur due to the switch of platform not being handled correctly. I've opened https://github.com/spring-projects/spring-boot/issues/46674 for that.
@ofirm93 does the last of the failures above look like an exact match for what you're seeing? It would be useful if you could wipe clean your Docker Daemon, build your sample project and then share the resulting output.
There may also be another problem with saving the image when the platform has been customized but the default buildpacks are being used. We can come back to that as needed.
Comment From: wilkinsona
Prefixing the buildpack references with docker:// and running with --stacktrace reveals some more information about the failure:
Caused by: org.springframework.boot.buildpack.platform.docker.transport.DockerEngineException: Docker API call to '/Users/aw036093/.docker/run/docker.sockdocker:///Users/aw036093/.docker/run/docker.sock/v1.24/images/docker.io/paketobuildpacks/opentelemetry:2/get' failed with status code 404 "Not Found" and message "unable to create manifests file: NotFound: content digest sha256:c7ee7bde14d209db30c4eb78f2f14cd1bb1654e7f5e19b1aa2f656045d37b72d: not found"
at org.springframework.boot.buildpack.platform.docker.transport.HttpClientTransport.execute(HttpClientTransport.java:169)
at org.springframework.boot.buildpack.platform.docker.transport.HttpClientTransport.get(HttpClientTransport.java:78)
at org.springframework.boot.buildpack.platform.docker.DockerApi$ImageApi.exportLayers(DockerApi.java:326)
at org.springframework.boot.buildpack.platform.build.Builder$BuilderResolverContext.exportImageLayers(Builder.java:396)
at org.springframework.boot.buildpack.platform.build.ImageBuildpack$ExportedLayers.<init>(ImageBuildpack.java:119)
at org.springframework.boot.buildpack.platform.build.ImageBuildpack.<init>(ImageBuildpack.java:66)
... 121 more
This looks very similar to the failure that occurs when the buildpacks haven't been customized and it gets to the point where it's trying to save the built image.
The export of the layers is failing looking for an image manifest. c7ee7bde14d209db30c4eb78f2f14cd1bb1654e7f5e19b1aa2f656045d37b72d is the SHA of the linux/arm64 manifest:
docker manifest inspect paketobuildpacks/opentelemetry:2
{
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.index.v1+json",
"manifests": [
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"size": 406,
"digest": "sha256:8ab0595fcda7dfd7952e46e6f1dcdd3976db63d89fb4d0dcb9b6939b7c105eb4",
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"size": 406,
"digest": "sha256:c7ee7bde14d209db30c4eb78f2f14cd1bb1654e7f5e19b1aa2f656045d37b72d",
"platform": {
"architecture": "arm64",
"os": "linux"
}
}
]
}
It's looking for a manifest that hasn't been pulled as we previously asked only for the linux/amd64 parts by specifying the platform when pulling the image. Support for specifying the platform when exporting an image was added in 1.48. That's quite recent and only available since Docker 28.0 that was released in February 2025.
Patching the buildpack platform to include the platform when making the GET request improves the situation and we then see a failure from within the builder when it's trying to export the image:
> Task :bootBuildImage
Building image 'docker.io/library/demo:0.0.1-SNAPSHOT'
> Pulling builder image 'docker.io/paketobuildpacks/builder-noble-java-tiny:latest' for platform 'linux/amd64' ..................................................
> Pulled builder image 'paketobuildpacks/builder-noble-java-tiny@sha256:ae0cd71a4e28e3c3ba07fc409d197f04d28ed321910a2474eeb496e37d6ecc05'
> Pulling run image 'docker.io/paketobuildpacks/ubuntu-noble-run-tiny:0.0.21' for platform 'linux/amd64' ..................................................
> Pulled run image 'paketobuildpacks/ubuntu-noble-run-tiny@sha256:084c81f50c9619c5da73bd7310febf44437db8621c7563601989ef8839882bce'
> Pulling buildpack image 'docker.io/paketobuildpacks/java:latest' for platform 'linux/amd64' ..................................................
> Pulled buildpack image 'paketobuildpacks/java@sha256:82a781939c0a2e1987bb305fed96d519ae452ecf0c3e380ce8a083dac47fb286'
> Pulling buildpack image 'docker.io/paketobuildpacks/opentelemetry:2' for platform 'linux/amd64' ..................................................
> Pulled buildpack image 'paketobuildpacks/opentelemetry@sha256:5ad8c8ffd824ce271ca749e3c883b544c8f22f7296f8c33f2dbffbc94de29b25'
> Executing lifecycle version v0.20.12
> Using build cache volume 'pack-cache-5cbe5692dbc4.build'
> Running creator
[creator] ===> ANALYZING
[creator] Image with name "docker.io/library/demo:0.0.1-SNAPSHOT" not found
[creator] ===> DETECTING
[creator] target distro name/version labels not found, reading /etc/os-release file
[creator] 7 of 27 buildpacks participating
[creator] paketo-buildpacks/ca-certificates 3.10.3
[creator] paketo-buildpacks/bellsoft-liberica 11.2.5
[creator] paketo-buildpacks/syft 2.17.0
[creator] paketo-buildpacks/executable-jar 6.13.2
[creator] paketo-buildpacks/dist-zip 5.10.2
[creator] paketo-buildpacks/spring-boot 5.33.3
[creator] paketo-buildpacks/opentelemetry 2.14.1
[creator] ===> RESTORING
[creator] Restoring metadata for "paketo-buildpacks/syft:syft" from cache
[creator] Restoring metadata for "paketo-buildpacks/spring-boot:spring-cloud-bindings" from cache
[creator] Restoring data for "paketo-buildpacks/syft:syft" from cache
[creator] Restoring data for "paketo-buildpacks/spring-boot:spring-cloud-bindings" from cache
[creator] Restoring data for SBOM from cache
[creator] ===> BUILDING
[creator] target distro name/version labels not found, reading /etc/os-release file
[creator]
[creator] Paketo Buildpack for CA Certificates 3.10.3
[creator] https://github.com/paketo-buildpacks/ca-certificates
[creator] Build Configuration:
[creator] $BP_EMBED_CERTS false Embed certificates into the image
[creator] $BP_ENABLE_RUNTIME_CERT_BINDING true Deprecated: Enable/disable certificate helper layer to add certs at runtime
[creator] $BP_RUNTIME_CERT_BINDING_DISABLED false Disable certificate helper layer to add certs at runtime
[creator] Launch Helper: Contributing to layer
[creator] Creating /layers/paketo-buildpacks_ca-certificates/helper/exec.d/ca-certificates-helper
[creator]
[creator] Paketo Buildpack for BellSoft Liberica 11.2.5
[creator] https://github.com/paketo-buildpacks/bellsoft-liberica
[creator] Build Configuration:
[creator] $BP_JVM_JLINK_ARGS --no-man-pages --no-header-files --strip-debug --compress=1 configure custom link arguments (--output must be omitted)
[creator] $BP_JVM_JLINK_ENABLED false enables running jlink tool to generate custom JRE
[creator] $BP_JVM_TYPE JRE the JVM type - JDK or JRE
[creator] $BP_JVM_VERSION 21 the Java version
[creator] Launch Configuration:
[creator] $BPL_DEBUG_ENABLED false enables Java remote debugging support
[creator] $BPL_DEBUG_PORT 8000 configure the remote debugging port
[creator] $BPL_DEBUG_SUSPEND false configure whether to suspend execution until a debugger has attached
[creator] $BPL_HEAP_DUMP_PATH write heap dumps on error to this path
[creator] $BPL_JAVA_NMT_ENABLED true enables Java Native Memory Tracking (NMT)
[creator] $BPL_JAVA_NMT_LEVEL summary configure level of NMT, summary or detail
[creator] $BPL_JFR_ARGS configure custom Java Flight Recording (JFR) arguments
[creator] $BPL_JFR_ENABLED false enables Java Flight Recording (JFR)
[creator] $BPL_JMX_ENABLED false enables Java Management Extensions (JMX)
[creator] $BPL_JMX_PORT 5000 configure the JMX port
[creator] $BPL_JVM_HEAD_ROOM 0 the headroom in memory calculation
[creator] $BPL_JVM_LOADED_CLASS_COUNT 35% of classes the number of loaded classes in memory calculation
[creator] $BPL_JVM_THREAD_COUNT 250 the number of threads in memory calculation
[creator] $JAVA_TOOL_OPTIONS the JVM launch flags
[creator] Using Java version 21 extracted from MANIFEST.MF
[creator] BellSoft Liberica JRE 21.0.8: Contributing to layer
[creator] Downloading from https://github.com/bell-sw/Liberica/releases/download/21.0.8+12/bellsoft-jre21.0.8+12-linux-amd64.tar.gz
[creator] Verifying checksum
[creator] Expanding to /layers/paketo-buildpacks_bellsoft-liberica/jre
[creator] Adding 146 container CA certificates to JVM truststore
[creator] Writing env.launch/BPI_APPLICATION_PATH.default
[creator] Writing env.launch/BPI_JVM_CACERTS.default
[creator] Writing env.launch/BPI_JVM_CLASS_COUNT.default
[creator] Writing env.launch/BPI_JVM_SECURITY_PROVIDERS.default
[creator] Writing env.launch/JAVA_HOME.default
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.append
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.delim
[creator] Writing env.launch/MALLOC_ARENA_MAX.default
[creator] Launch Helper: Contributing to layer
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/java-opts
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/jvm-heap
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/link-local-dns
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/memory-calculator
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/security-providers-configurer
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/jmx
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/jfr
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/openssl-certificate-loader
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/security-providers-classpath-9
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/debug-9
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/nmt
[creator] Java Security Properties: Contributing to layer
[creator] Writing env.launch/JAVA_SECURITY_PROPERTIES.default
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.append
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.delim
[creator]
[creator] Paketo Buildpack for Syft 2.17.0
[creator] https://github.com/paketo-buildpacks/syft
[creator] Downloading from https://github.com/anchore/syft/releases/download/v1.28.0/syft_1.28.0_linux_amd64.tar.gz
[creator] Verifying checksum
[creator] Writing env.build/SYFT_CHECK_FOR_APP_UPDATE.default
[creator]
[creator] Paketo Buildpack for Executable JAR 6.13.2
[creator] https://github.com/paketo-buildpacks/executable-jar
[creator] Class Path: Contributing to layer
[creator] Writing env/CLASSPATH.delim
[creator] Writing env/CLASSPATH.prepend
[creator] Process types:
[creator] executable-jar: java org.springframework.boot.loader.launch.JarLauncher (direct)
[creator] task: java org.springframework.boot.loader.launch.JarLauncher (direct)
[creator] web: java org.springframework.boot.loader.launch.JarLauncher (direct)
[creator]
[creator] Paketo Buildpack for Spring Boot 5.33.3
[creator] https://github.com/paketo-buildpacks/spring-boot
[creator] Build Configuration:
[creator] $BPL_JVM_CDS_ENABLED false whether to enable CDS optimizations at runtime
[creator] $BPL_SPRING_AOT_ENABLED false whether to enable Spring AOT at runtime
[creator] $BP_JVM_CDS_ENABLED false whether to enable CDS & perform JVM training run
[creator] $BP_SPRING_AOT_ENABLED false whether to enable Spring AOT
[creator] $BP_SPRING_CLOUD_BINDINGS_DISABLED false whether to contribute Spring Boot cloud bindings support
[creator] $BP_SPRING_CLOUD_BINDINGS_VERSION 1 default version of Spring Cloud Bindings library to contribute
[creator] Launch Configuration:
[creator] $BPL_SPRING_CLOUD_BINDINGS_DISABLED false whether to auto-configure Spring Boot environment properties from bindings
[creator] $BPL_SPRING_CLOUD_BINDINGS_ENABLED true Deprecated - whether to auto-configure Spring Boot environment properties from bindings
[creator] Creating slices from layers index
[creator] dependencies (6.5 MB)
[creator] spring-boot-loader (458.0 KB)
[creator] snapshot-dependencies (3.8 MB)
[creator] application (27.0 KB)
[creator] Spring Cloud Bindings 2.0.4: Reusing cached layer
[creator] Web Application Type: Contributing to layer
[creator] Non-web application detected
[creator] Writing env.launch/BPL_JVM_THREAD_COUNT.default
[creator] Launch Helper: Contributing to layer
[creator] Creating /layers/paketo-buildpacks_spring-boot/helper/exec.d/spring-cloud-bindings
[creator] 4 application slices
[creator] Image labels:
[creator] org.opencontainers.image.title
[creator] org.opencontainers.image.version
[creator] org.springframework.boot.version
[creator]
[creator] Paketo Buildpack for OpenTelemetry 2.14.1
[creator] https://github.com/paketo-buildpacks/opentelemetry
[creator] OpenTelemetry Java Agent 2.18.1: Contributing to layer
[creator] Downloading from https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v2.18.1/opentelemetry-javaagent.jar
[creator] Verifying checksum
[creator] Copying to /layers/paketo-buildpacks_opentelemetry/opentelemetry-java
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.append
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.delim
[creator] Writing env.launch/OTEL_JAVAAGENT_ENABLED.default
[creator] Writing env.launch/OTEL_LOGS_EXPORTER.default
[creator] Writing env.launch/OTEL_METRICS_EXPORTER.default
[creator] Launch Helper: Contributing to layer
[creator] Creating /layers/paketo-buildpacks_opentelemetry/helper/exec.d/properties
[creator] ===> EXPORTING
[creator] Adding layer 'paketo-buildpacks/ca-certificates:helper'
[creator] Adding layer 'paketo-buildpacks/bellsoft-liberica:helper'
[creator] Adding layer 'paketo-buildpacks/bellsoft-liberica:java-security-properties'
[creator] Adding layer 'paketo-buildpacks/bellsoft-liberica:jre'
[creator] Adding layer 'paketo-buildpacks/executable-jar:classpath'
[creator] Adding layer 'paketo-buildpacks/spring-boot:helper'
[creator] Adding layer 'paketo-buildpacks/spring-boot:spring-cloud-bindings'
[creator] Adding layer 'paketo-buildpacks/spring-boot:web-application-type'
[creator] Adding layer 'paketo-buildpacks/opentelemetry:helper'
[creator] Adding layer 'paketo-buildpacks/opentelemetry:opentelemetry-java'
[creator] Adding layer 'buildpacksio/lifecycle:launch.sbom'
[creator] Added 5/5 app layer(s)
[creator] Adding layer 'buildpacksio/lifecycle:launcher'
[creator] Adding layer 'buildpacksio/lifecycle:config'
[creator] Adding layer 'buildpacksio/lifecycle:process-types'
[creator] Adding label 'io.buildpacks.lifecycle.metadata'
[creator] Adding label 'io.buildpacks.build.metadata'
[creator] Adding label 'io.buildpacks.project.metadata'
[creator] Adding label 'org.opencontainers.image.title'
[creator] Adding label 'org.opencontainers.image.version'
[creator] Adding label 'org.springframework.boot.version'
[creator] Setting default process type 'web'
[creator] Saving docker.io/library/demo:0.0.1-SNAPSHOT...
[creator] ERROR: failed to export: saving image: failed to fetch base layers: saving image with ID "sha256:084c81f50c9619c5da73bd7310febf44437db8621c7563601989ef8839882bce" from the docker daemon: Error response from daemon: unable to create manifests file: NotFound: content digest sha256:27a8cdfd06282af14980e596bdcf79c9281a69cea83021b95e686f33603f5300: not found
Given that the failure's occurring from within the creator, this may require a change on the buildpacks side.
Comment From: ofirm93
Hi @wilkinsona
@ofirm93 does the last of the failures above look like an exact match for what you're seeing? It would be useful if you could wipe clean your Docker Daemon, build your sample project and then share the resulting output.
Yes this is the exact issue I reported on. I faced the builder image issue before and in order to specifically result the error for opentelemetry:2 buildpack I had to hardcode the image with sha256 reference. I rerun as you asked and the result is just like yours:
Starting Gradle Daemon...
Gradle Daemon started in 833 ms
> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :resolveMainClassName UP-TO-DATE
> Task :bootJar UP-TO-DATE
> Task :bootBuildImage
Building image 'docker.io/library/demo:v1'
> Pulling builder image 'docker.io/paketobuildpacks/builder-noble-java-tiny@sha256:7d2fdc07afb6d54cd5dd61fb466c966dd9f3dc1dd133ffd3714ddf086000b773' for platform 'linux/amd64' ..................................................
> Pulled builder image 'paketobuildpacks/builder-noble-java-tiny@sha256:7d2fdc07afb6d54cd5dd61fb466c966dd9f3dc1dd133ffd3714ddf086000b773'
> Pulling run image 'docker.io/paketobuildpacks/ubuntu-noble-run-tiny:0.0.21' for platform 'linux/amd64' ..................................................
> Pulled run image 'paketobuildpacks/ubuntu-noble-run-tiny@sha256:084c81f50c9619c5da73bd7310febf44437db8621c7563601989ef8839882bce'
> Pulling buildpack image 'docker.io/paketobuildpacks/java:latest' for platform 'linux/amd64' ..................................................
> Pulled buildpack image 'paketobuildpacks/java@sha256:82a781939c0a2e1987bb305fed96d519ae452ecf0c3e380ce8a083dac47fb286'
> Pulling buildpack image 'docker.io/paketobuildpacks/opentelemetry:2' for platform 'linux/amd64' ..................................................
> Pulled buildpack image 'paketobuildpacks/opentelemetry@sha256:5ad8c8ffd824ce271ca749e3c883b544c8f22f7296f8c33f2dbffbc94de29b25'
> Task :bootBuildImage FAILED
5 actionable tasks: 1 executed, 4 up-to-date
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':bootBuildImage'.
> Invalid buildpack reference 'paketobuildpacks/opentelemetry:2'
Your analysis on save operation with platform parameter is exactly what I came up with and had the same concerns.
When I patched the gradle plugin like you did I just hardcoded the platform query param to linux/amd64 and the gradle task finished successfully. Maybe that's why I didn't fail at the last stage like happened to you.
The only additional info I can provide here is that for some reason the issue doesn't reproduce on older M processors (M1, M2, M3). I don't know on which platform you tested so maybe you did succeed reproducing it on older machines. I suspect it might be related to M4 being based on ARMv9 architecture which probably required changes to Apple Virtualization framework and how docker uses it.
Comment From: ofirm93
@wilkinsona do you need further assistance?
Comment From: jdnurmi
So chasing this down myself, the effective steps I needed to run to change architectures:
docker rmi -f docker.io/paketobuildpacks/builder-jammy-java-tiny:latest paketobuildpacks/java paketobuildpacks/run-jammy-tiny paketobuildpacks/java paketobuildpacks/builder-jammy-buildpackless-tiny
./gradlew --stop
Anything less any the builds seemed "contaminated" - I also had to use distinct build images (appended $arch myself), and then do manifest create/push to get it to upload.
Hopefully this helps someone else who gets here by search