mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-31 23:58:03 +08:00
bake: deny access to local dockerfile for remote invocation with local context
we don't currently support reading a remote Dockerfile with a local context when doing a remote invocation because we automatically derive the dockerfile from the context atm. To avoid mistakenly reading a local Dockerfile, we check if the Dockerfile exists locally and if so, we error out. Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
18
bake/bake.go
18
bake/bake.go
@@ -1070,6 +1070,24 @@ func toBuildOpt(t *Target, inp *Input) (*build.Options, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
} else if !build.IsRemoteURL(bi.DockerfilePath) && strings.HasPrefix(bi.ContextPath, "cwd://") && (inp != nil && build.IsRemoteURL(inp.URL)) {
|
||||
// We don't currently support reading a remote Dockerfile with a local
|
||||
// context when doing a remote invocation because we automatically
|
||||
// derive the dockerfile from the context atm:
|
||||
//
|
||||
// target "default" {
|
||||
// context = BAKE_CMD_CONTEXT
|
||||
// dockerfile = "Dockerfile.app"
|
||||
// }
|
||||
//
|
||||
// > docker buildx bake https://github.com/foo/bar.git
|
||||
// failed to solve: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount3004544897/Dockerfile.app: no such file or directory
|
||||
//
|
||||
// To avoid mistakenly reading a local Dockerfile, we check if the
|
||||
// Dockerfile exists locally and if so, we error out.
|
||||
if _, err := os.Stat(filepath.Join(path.Clean(strings.TrimPrefix(bi.ContextPath, "cwd://")), bi.DockerfilePath)); err == nil {
|
||||
return nil, errors.Errorf("reading a dockerfile for a remote build invocation is currently not supported")
|
||||
}
|
||||
}
|
||||
if strings.HasPrefix(bi.ContextPath, "cwd://") {
|
||||
bi.ContextPath = path.Clean(strings.TrimPrefix(bi.ContextPath, "cwd://"))
|
||||
|
Reference in New Issue
Block a user