diff --git a/bake/compose.go b/bake/compose.go index fb5f031b..457fe2c1 100644 --- a/bake/compose.go +++ b/bake/compose.go @@ -75,6 +75,14 @@ func ParseCompose(cfgs []compose.ConfigFile, envs map[string]string) (*Config, e dockerfileInlineP = &dockerfileInline } + var additionalContexts map[string]string + if s.Build.AdditionalContexts != nil { + additionalContexts = map[string]string{} + for k, v := range s.Build.AdditionalContexts { + additionalContexts[k] = v + } + } + var secrets []string for _, bs := range s.Build.Secrets { secret, err := composeToBuildkitSecret(bs, cfg.Secrets[bs.Source]) @@ -95,6 +103,7 @@ func ParseCompose(cfgs []compose.ConfigFile, envs map[string]string) (*Config, e t := &Target{ Name: targetName, Context: contextPathP, + Contexts: additionalContexts, Dockerfile: dockerfilePathP, DockerfileInline: dockerfileInlineP, Tags: s.Build.Tags, diff --git a/bake/compose_test.go b/bake/compose_test.go index 7dda4b21..5074248b 100644 --- a/bake/compose_test.go +++ b/bake/compose_test.go @@ -21,6 +21,8 @@ services: webapp: build: context: ./dir + additional_contexts: + foo: /bar dockerfile: Dockerfile-alternate network: none @@ -63,6 +65,7 @@ secrets: require.Equal(t, "webapp", c.Targets[1].Name) require.Equal(t, "./dir", *c.Targets[1].Context) + require.Equal(t, map[string]string{"foo": "/bar"}, c.Targets[1].Contexts) require.Equal(t, "Dockerfile-alternate", *c.Targets[1].Dockerfile) require.Equal(t, 1, len(c.Targets[1].Args)) require.Equal(t, ptrstr("123"), c.Targets[1].Args["buildno"])