@@ -408,6 +408,10 @@ def _apply_artifact_edits(state: dict, edits: list[ArtifactEditRequest]) -> None
408408 generated = infracost .setdefault ("generated_terraform" , {})
409409 generated_files = generated ["files" ] if isinstance (generated .get ("files" ), dict ) else generated
410410
411+ plural_images = artifacts .get ("docker_images" )
412+ if not isinstance (plural_images , list ):
413+ plural_images = None
414+
411415 for edit in edits :
412416 file_path = edit .file_path
413417 content = edit .content
@@ -417,6 +421,11 @@ def _apply_artifact_edits(state: dict, edits: list[ArtifactEditRequest]) -> None
417421 generated_files [file_path .replace ("." , "_" )] = content
418422 elif file_path == "Dockerfile" :
419423 artifacts ["dockerfile" ] = content
424+ if plural_images is not None :
425+ _apply_dockerfile_edit (plural_images , "." , content )
426+ elif file_path .endswith ("/Dockerfile" ) and plural_images is not None :
427+ context = file_path [:- len ("/Dockerfile" )]
428+ _apply_dockerfile_edit (plural_images , context , content )
420429 elif file_path == "docker-image.json" :
421430 import json as _json
422431
@@ -432,6 +441,28 @@ def _apply_artifact_edits(state: dict, edits: list[ArtifactEditRequest]) -> None
432441 dop_tf [edit .file_path ] = edit .content
433442 elif edit .file_path == "Dockerfile" :
434443 dop_artifacts ["dockerfile" ] = edit .content
444+ dop_images = dop_artifacts .get ("docker_images" )
445+ if isinstance (dop_images , list ):
446+ _apply_dockerfile_edit (dop_images , "." , edit .content )
447+ elif edit .file_path .endswith ("/Dockerfile" ):
448+ dop_images = dop_artifacts .get ("docker_images" )
449+ if isinstance (dop_images , list ):
450+ _apply_dockerfile_edit (
451+ dop_images , edit .file_path [:- len ("/Dockerfile" )], edit .content
452+ )
453+
454+
455+ def _apply_dockerfile_edit (images : list [dict ], context : str , content : str ) -> None :
456+ """Route a Dockerfile edit to the plural image whose build context
457+ matches. Root-level Dockerfile edits target the image with context "."."""
458+ for image in images :
459+ img_context = (image .get ("context" ) or "." ).rstrip ("/" )
460+ if img_context == context :
461+ image ["dockerfile" ] = content
462+ return
463+ # No exact context match: apply to the primary (first) image.
464+ if images :
465+ images [0 ]["dockerfile" ] = content
435466
436467
437468class RollbackRequest (BaseModel ):
0 commit comments