Fix inherited env var not found in multi-var .env #221
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.
The package
dotenv
implements inherited environment variables which allows variables to be set on the host and passed to a container using key-only pairs in a.env
file. Packagecompose-go
uses this feature by calling the functionParseWithLookup
ofdotenv
.One expectation of this feature is that an environment variable will not be passed to the container if the host does not set it. This scenario is tested in
dotenv
. However, there is an issue if a.env
file contains multiple key pairs resulting of environment variables not being set properly in the container.This PR fixes this issue.
Demonstration
Define a
.env
file with the following:And a docker-compose.yml file:
Docker
Here
ENV_A
has not been set andENV_B
is set with an empty value.Docker-Compose (V1)
With Docker-Compose (V1), we get the same outcome as Docker
Compose (v2)
Here's where the outcome is quite unexpected:
ENV_A
is set with the valueENV_B=
.Compose seems to have a problem with key-only items in
.env
file.