From 40dbcd6e11302ec9cba4a5ccc5838d2238c3c25e Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Mon, 19 Jun 2023 05:47:09 +0200 Subject: [PATCH] builder: pass host-gateway IP as worker label We missed a case when parsing extra hosts from the dockerfile frontend so the build fails. To handle this case we need to set a dedicated worker label that contains the host gateway IP so clients like Buildx can just set the proper host:ip when parsing extra hosts that contain the special string "host-gateway". Signed-off-by: CrazyMax (cherry picked from commit 21e50b89c92666589780eba6f83ad0851d8e9235) --- builder/builder-next/controller.go | 10 ++++++++++ builder/builder-next/worker/label/label.go | 9 +++++++++ 2 files changed, 19 insertions(+) create mode 100644 builder/builder-next/worker/label/label.go diff --git a/builder/builder-next/controller.go b/builder/builder-next/controller.go index 011269c2d8..7f42e1d9d5 100644 --- a/builder/builder-next/controller.go +++ b/builder/builder-next/controller.go @@ -17,6 +17,7 @@ import ( containerimageexp "github.com/docker/docker/builder/builder-next/exporter" "github.com/docker/docker/builder/builder-next/imagerefchecker" mobyworker "github.com/docker/docker/builder/builder-next/worker" + wlabel "github.com/docker/docker/builder/builder-next/worker/label" "github.com/docker/docker/daemon/config" "github.com/docker/docker/daemon/graphdriver" units "github.com/docker/go-units" @@ -204,6 +205,7 @@ func newController(rt http.RoundTripper, opt Opt) (*control.Controller, error) { Transport: rt, Layers: layers, Platforms: archutil.SupportedPlatforms(true), + Labels: getLabels(opt, nil), } wc := &worker.Controller{} @@ -286,3 +288,11 @@ func getEntitlements(conf config.BuilderConfig) []string { } return ents } + +func getLabels(opt Opt, labels map[string]string) map[string]string { + if labels == nil { + labels = make(map[string]string) + } + labels[wlabel.HostGatewayIP] = opt.DNSConfig.HostGatewayIP.String() + return labels +} diff --git a/builder/builder-next/worker/label/label.go b/builder/builder-next/worker/label/label.go new file mode 100644 index 0000000000..f879720f81 --- /dev/null +++ b/builder/builder-next/worker/label/label.go @@ -0,0 +1,9 @@ +package label + +// Pre-defined label keys similar to BuildKit ones +// https://github.com/moby/buildkit/blob/v0.11.6/worker/label/label.go#L3-L16 +const ( + prefix = "org.mobyproject.buildkit.worker.moby." + + HostGatewayIP = prefix + "host-gateway-ip" +)