Fix DockerComposeEnvironment duplicating image names in .env file #12310
+182
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
When publishing Docker Compose environments, the
.envfile would contain duplicate entries for container image names if the file was regenerated. This is a regression from the change that removed the hard-coded "latest" tag for container images.For example, after multiple publishes, the
.envfile could contain:Root Cause
The issue was in the
EnvFile.Add()method insrc/Aspire.Hosting.Docker/EnvFile.cs. WhenonlyIfMissing=falseis set for container image references (line 193 ofDockerComposePublishingContext.cs), the method would add the key again instead of updating the existing entry.The original logic only checked if the key existed when
onlyIfMissing=true:Solution
Modified
EnvFile.Add()to implement proper upsert logic:onlyIfMissing=false: Find and update the existing line with the new valueonlyIfMissing=true: Skip adding (existing behavior)This ensures that container image names are properly updated without creating duplicate entries in the
.envfile.Testing
EnvFileTests.cscovering all scenarios.envfile handling behavior is preservedFixes the issue mentioned in
aspire/src/Aspire.Hosting.Docker/DockerComposePublishingContext.cs
Lines 190 to 196 in a0eb933
Original prompt
Fixes #12309
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.