fix(compose): preserve project env vars when compose specifies empty passthrough placeholders - #616
Open
chbndrhnns wants to merge 1 commit into
Open
fix(compose): preserve project env vars when compose specifies empty passthrough placeholders#616chbndrhnns wants to merge 1 commit into
chbndrhnns wants to merge 1 commit into
Conversation
…passthrough placeholders
Do not let empty inline compose environment values (originating from
unpopulated compose passthrough expressions like ${VAR:-} or ${VAR})
clobber configured non-empty project-level environment variables during
deploy env merge.
Fixes oblien#614
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 a Docker Compose file defines environment variables using passthrough or default syntax (such as
MY_VAR: ${MY_VAR:-}orMY_VAR: ${MY_VAR}), the compose parser imports these unset variables into the service's inline environment as""(empty string).During deployment,
mergeServiceDeployEnvlayersproject -> inline -> service. Because the inline environment hadMY_VAR: "", it clobbered any configured non-empty project-level environment variable with an empty string.Closes #614
Solution
mergeServiceDeployEnv, when merging the inline compose environment over the project environment, skip empty string values ("") if the project environment already defines a non-empty value for that key.PORT: "3000") and explicit service-scoped environment overrides still take precedence as intended.apps/api/test/modules/deployments/compose-env-passthrough.test.tsto verify and defend this behavior.