diff --git a/bake/bake.go b/bake/bake.go index edef8c1e6d5..8b99bb0a5ae 100644 --- a/bake/bake.go +++ b/bake/bake.go @@ -435,6 +435,7 @@ type Target struct { Outputs []string `json:"output,omitempty" hcl:"output,optional"` Pull *bool `json:"pull,omitempty" hcl:"pull,optional"` NoCache *bool `json:"no-cache,omitempty" hcl:"no-cache,optional"` + NetworkMode *string // IMPORTANT: if you add more fields here, do not forget to update newOverrides and README. } @@ -501,6 +502,9 @@ func (t *Target) Merge(t2 *Target) { if t2.NoCache != nil { t.NoCache = t2.NoCache } + if t2.NetworkMode != nil { + t.NetworkMode = t2.NetworkMode + } t.Inherits = append(t.Inherits, t2.Inherits...) } @@ -641,6 +645,10 @@ func toBuildOpt(t *Target, inp *Input) (*build.Options, error) { if t.Pull != nil { pull = *t.Pull } + networkMode := "" + if t.NetworkMode != nil { + networkMode = *t.NetworkMode + } bi := build.Inputs{ ContextPath: contextPath, @@ -657,12 +665,13 @@ func toBuildOpt(t *Target, inp *Input) (*build.Options, error) { t.Context = &bi.ContextPath bo := &build.Options{ - Inputs: bi, - Tags: t.Tags, - BuildArgs: t.Args, - Labels: t.Labels, - NoCache: noCache, - Pull: pull, + Inputs: bi, + Tags: t.Tags, + BuildArgs: t.Args, + Labels: t.Labels, + NoCache: noCache, + Pull: pull, + NetworkMode: networkMode, } platforms, err := platformutil.Parse(t.Platforms) diff --git a/bake/compose.go b/bake/compose.go index 48c71dbe24e..2ea8885054a 100644 --- a/bake/compose.go +++ b/bake/compose.go @@ -79,7 +79,8 @@ func ParseCompose(dt []byte) (*Config, error) { val, ok := cfg.Environment[val] return val, ok })), - CacheFrom: s.Build.CacheFrom, + CacheFrom: s.Build.CacheFrom, + NetworkMode: &s.Build.Network, } if err = t.composeExtTarget(s.Build.Extensions); err != nil { return nil, err diff --git a/bake/compose_test.go b/bake/compose_test.go index daa5f661ea4..d9a4eb1a961 100644 --- a/bake/compose_test.go +++ b/bake/compose_test.go @@ -19,6 +19,8 @@ services: build: context: ./dir dockerfile: Dockerfile-alternate + network: + none args: buildno: 123 `) @@ -43,6 +45,7 @@ services: require.Equal(t, "Dockerfile-alternate", *c.Targets[1].Dockerfile) require.Equal(t, 1, len(c.Targets[1].Args)) require.Equal(t, "123", c.Targets[1].Args["buildno"]) + require.Equal(t, "none", *c.Targets[1].NetworkMode) } func TestNoBuildOutOfTreeService(t *testing.T) {