mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-10 21:47:13 +08:00
Add dial-stdio command
This allows the buildx CLI to act a proxy to the configured instance. It allows external code to use buildx itself as a driver for connecting to buildkitd instances. Instance and node selection should follow the same semantics as as `buildx build`, including taking into account the `BUILDX_BUILDER` env var and the `--builder` global flag. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
47
docs/reference/buildx_dial-stdio.md
Normal file
47
docs/reference/buildx_dial-stdio.md
Normal file
@ -0,0 +1,47 @@
|
||||
# docker buildx dial-stdio
|
||||
|
||||
<!---MARKER_GEN_START-->
|
||||
Proxy current stdio streams to builder instance
|
||||
|
||||
### Options
|
||||
|
||||
| Name | Type | Default | Description |
|
||||
|:-------------|:---------|:--------|:-------------------------------------------------|
|
||||
| `--builder` | `string` | | Override the configured builder instance |
|
||||
| `--platform` | `string` | | Target platform: this is used for node selection |
|
||||
| `--progress` | `string` | `quiet` | Set type of progress output (auto, plain, tty). |
|
||||
|
||||
|
||||
<!---MARKER_GEN_END-->
|
||||
|
||||
## Description
|
||||
|
||||
dial-stdio uses the stdin and stdout streams of the command to proxy to the configured builder instance.
|
||||
It is not intended to be used by humans, but rather by other tools that want to interact with the builder instance via BuildKit API.
|
||||
|
||||
## Examples
|
||||
|
||||
Example go program that uses the dial-stdio command wire up a buildkit client.
|
||||
This is for example use only and may not be suitable for production use.
|
||||
|
||||
```go
|
||||
client.New(ctx, "", client.WithContextDialer(func(context.Context, string) (net.Conn, error) {
|
||||
c1, c2 := net.Pipe()
|
||||
cmd := exec.Command("docker", "buildx", "dial-stdio")
|
||||
cmd.Stdin = c1
|
||||
cmd.Stdout = c1
|
||||
|
||||
if err := cmd.Start(); err != nil {
|
||||
c1.Close()
|
||||
c2.Close()
|
||||
return nil, err
|
||||
}
|
||||
|
||||
go func() {
|
||||
cmd.Wait()
|
||||
c2.Close()
|
||||
}()
|
||||
|
||||
return c2
|
||||
}))
|
||||
```
|
Reference in New Issue
Block a user