github.com/toplink-cn/moby@v0.0.0-20240305205811-460b4aebdf81/client/buildkit/buildkit.go (about)

     1  package buildkit
     2  
     3  import (
     4  	"context"
     5  	"net"
     6  
     7  	"github.com/docker/docker/client"
     8  	bkclient "github.com/moby/buildkit/client"
     9  )
    10  
    11  // ClientOpts returns a list of buildkit client options which allows the
    12  // caller to create a buildkit client which will connect to the buildkit
    13  // API provided by the daemon. These options can be passed to [bkclient.New].
    14  //
    15  // Example:
    16  //
    17  //	bkclient.New(ctx, "", ClientOpts(c)...)
    18  func ClientOpts(c client.CommonAPIClient) []bkclient.ClientOpt {
    19  	return []bkclient.ClientOpt{
    20  		bkclient.WithSessionDialer(func(ctx context.Context, proto string, meta map[string][]string) (net.Conn, error) {
    21  			return c.DialHijack(ctx, "/session", proto, meta)
    22  		}),
    23  		bkclient.WithContextDialer(func(ctx context.Context, _ string) (net.Conn, error) {
    24  			return c.DialHijack(ctx, "/grpc", "h2c", nil)
    25  		}),
    26  	}
    27  }