@@ -423,17 +423,24 @@ export async function internalGetImageBuildInfoFromDockerfile(inspectDockerImage
423
423
delete dockerfile . preamble . directives . syntax ;
424
424
}
425
425
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 ) ;
428
435
if ( image ) {
429
436
images . push ( image ) ;
430
437
}
431
438
}
432
439
if ( images . length !== 0 && ! images . every ( image => image === images [ 0 ] ) ) {
433
440
throw new Error ( `Inconsistent base image used for multi-platform builds. Please check your Dockerfile.` ) ;
434
441
}
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 ;
437
444
const dockerfileUser = findUserStatement ( dockerfile , dockerBuildArgs , envListToObj ( imageDetails ?. Config . Env ) , targetStage ) ;
438
445
const user = dockerfileUser || imageDetails ?. Config . User || 'root' ;
439
446
const metadata = imageDetails ? getImageMetadata ( imageDetails , substitute , output ) : { config : [ ] , raw : [ ] , substitute } ;
0 commit comments