|
@@ -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
|