From b899db64237836d0290e479197246da066e3ea5c Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Thu, 17 Mar 2022 12:04:13 +0100 Subject: [PATCH] builder: enable shm-size and ulimit for buildkit Signed-off-by: CrazyMax --- builder/builder-next/builder.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/builder/builder-next/builder.go b/builder/builder-next/builder.go index 5ee9d8e30d..d28e89825e 100644 --- a/builder/builder-next/builder.go +++ b/builder/builder-next/builder.go @@ -20,6 +20,7 @@ import ( "github.com/docker/docker/libnetwork" "github.com/docker/docker/pkg/idtools" "github.com/docker/docker/pkg/streamformatter" + "github.com/docker/go-units" controlapi "github.com/moby/buildkit/api/services/control" "github.com/moby/buildkit/client" "github.com/moby/buildkit/control" @@ -319,6 +320,17 @@ func (b *Builder) Build(ctx context.Context, opt backend.BuildConfig) (*builder. } frontendAttrs["add-hosts"] = extraHosts + if opt.Options.ShmSize > 0 { + frontendAttrs["shm-size"] = strconv.FormatInt(opt.Options.ShmSize, 10) + } + + ulimits, err := toBuildkitUlimits(opt.Options.Ulimits) + if err != nil { + return nil, err + } else if len(ulimits) > 0 { + frontendAttrs["ulimit"] = ulimits + } + exporterName := "" exporterAttrs := map[string]string{} @@ -558,6 +570,18 @@ func toBuildkitExtraHosts(inp []string) (string, error) { return strings.Join(hosts, ","), nil } +// toBuildkitUlimits converts ulimits from docker type=soft:hard format to buildkit's csv format +func toBuildkitUlimits(inp []*units.Ulimit) (string, error) { + if len(inp) == 0 { + return "", nil + } + ulimits := make([]string, 0, len(inp)) + for _, ulimit := range inp { + ulimits = append(ulimits, ulimit.String()) + } + return strings.Join(ulimits, ","), nil +} + func toBuildkitPruneInfo(opts types.BuildCachePruneOptions) (client.PruneInfo, error) { var until time.Duration untilValues := opts.Filters.Get("until") // canonical