podman build --remote URI Dockerfile shoud not be treated as file

Podman build --remote is translating https://path as if it was a file
path. This change will leave it as a URL so it can be parsed on the
server side.

Fixed: https://github.com/containers/podman/issues/20475

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
Daniel J Walsh
2023-10-24 20:15:47 -04:00
parent 4f6a8f0d50
commit a1577ec7b0
3 changed files with 18 additions and 1 deletions
pkg
api/handlers/compat
bindings/images
test/system

@ -224,8 +224,14 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
// it's not json, assume just a string
m = []string{query.Dockerfile}
}
for _, containerfile := range m {
containerFiles = append(containerFiles, filepath.Join(contextDirectory, filepath.Clean(filepath.FromSlash(containerfile))))
// Add path to containerfile iff it is not URL
if !(strings.HasPrefix(containerfile, "http://") || strings.HasPrefix(containerfile, "https://")) {
containerfile = filepath.Join(contextDirectory,
filepath.Clean(filepath.FromSlash(containerfile)))
}
containerFiles = append(containerFiles, containerfile)
}
dockerFileSet = true
}

@ -431,6 +431,11 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO
dontexcludes := []string{"!Dockerfile", "!Containerfile", "!.dockerignore", "!.containerignore"}
for _, c := range containerFiles {
// Don not add path to containerfile if it is a URL
if strings.HasPrefix(c, "http://") || strings.HasPrefix(c, "https://") {
newContainerFiles = append(newContainerFiles, c)
continue
}
if c == "/dev/stdin" {
content, err := io.ReadAll(os.Stdin)
if err != nil {

@ -1135,6 +1135,12 @@ EOF
run_podman rmi -f build_test
}
@test "podman build --file=https" {
run_podman build -t build_test --file=https://raw.githubusercontent.com/containers/podman/main/test/build/from-scratch/Dockerfile $PODMAN_TMPDIR
run_podman rmi -f build_test
}
function teardown() {
# A timeout or other error in 'build' can leave behind stale images
# that podman can't even see and which will cascade into subsequent