Skip to content

Commit 48a9b35

Browse files
committed
consider cases that not match host platform and target platform
1 parent d4d9f61 commit 48a9b35

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/spec-node/imageMetadata.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)