@@ -423,17 +423,24 @@ export async function internalGetImageBuildInfoFromDockerfile(inspectDockerImage
423423 delete dockerfile . preamble . directives . syntax ;
424424 }
425425 const images : string [ ] = [ ] ;
426- for ( const platform of buildxPlatforms ) {
427- const image = findBaseImage ( dockerfile , dockerBuildArgs , targetStage , platform ) ;
426+ if ( buildxPlatforms . length > 0 ) {
427+ for ( const platform of buildxPlatforms ) {
428+ const image = findBaseImage ( dockerfile , dockerBuildArgs , targetStage , platform ) ;
429+ if ( image ) {
430+ images . push ( image ) ;
431+ }
432+ }
433+ } else {
434+ const image = findBaseImage ( dockerfile , dockerBuildArgs , targetStage , platformInfo ) ;
428435 if ( image ) {
429436 images . push ( image ) ;
430437 }
431438 }
432439 if ( images . length !== 0 && ! images . every ( image => image === images [ 0 ] ) ) {
433440 throw new Error ( `Inconsistent base image used for multi-platform builds. Please check your Dockerfile.` ) ;
434441 }
435- const image = findBaseImage ( dockerfile , dockerBuildArgs , targetStage , platformInfo ) ;
436- const imageDetails = image && await inspectDockerImage ( image ) || undefined ;
442+ const baseImage = images . at ( 0 ) ;
443+ const imageDetails = baseImage && await inspectDockerImage ( baseImage ) || undefined ;
437444 const dockerfileUser = findUserStatement ( dockerfile , dockerBuildArgs , envListToObj ( imageDetails ?. Config . Env ) , targetStage ) ;
438445 const user = dockerfileUser || imageDetails ?. Config . User || 'root' ;
439446 const metadata = imageDetails ? getImageMetadata ( imageDetails , substitute , output ) : { config : [ ] , raw : [ ] , substitute } ;
0 commit comments