Skip to content

Commit 62f838f

Browse files
committed
resolve environment incremently, including values loaded from previous files in the list
Signed-off-by: Nicolas De Loof <[email protected]>
1 parent b764b46 commit 62f838f

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

loader/loader.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -629,6 +629,12 @@ func convertVolumePath(volume types.ServiceVolumeConfig) types.ServiceVolumeConf
629629

630630
func resolveEnvironment(serviceConfig *types.ServiceConfig, workingDir string, lookupEnv template.Mapping) error {
631631
environment := types.MappingWithEquals{}
632+
var resolve dotenv.LookupFn = func(s string) (string, bool) {
633+
if v, ok := environment[s]; ok && v != nil {
634+
return *v, true
635+
}
636+
return lookupEnv(s)
637+
}
632638

633639
if len(serviceConfig.EnvFile) > 0 {
634640
if serviceConfig.Environment == nil {
@@ -649,7 +655,7 @@ func resolveEnvironment(serviceConfig *types.ServiceConfig, workingDir string, l
649655
// Do not defer to avoid it inside a loop
650656
file.Close() //nolint:errcheck
651657

652-
fileVars, err := dotenv.ParseWithLookup(bytes.NewBuffer(b), dotenv.LookupFn(lookupEnv))
658+
fileVars, err := dotenv.ParseWithLookup(bytes.NewBuffer(b), resolve)
653659
if err != nil {
654660
return err
655661
}

0 commit comments

Comments
 (0)