mirror of
https://github.com/containers/podman.git
synced 2025-09-11 17:15:06 +08:00
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:
@ -224,8 +224,14 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
|
|||||||
// it's not json, assume just a string
|
// it's not json, assume just a string
|
||||||
m = []string{query.Dockerfile}
|
m = []string{query.Dockerfile}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, containerfile := range m {
|
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
|
dockerFileSet = true
|
||||||
}
|
}
|
||||||
|
@ -431,6 +431,11 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO
|
|||||||
|
|
||||||
dontexcludes := []string{"!Dockerfile", "!Containerfile", "!.dockerignore", "!.containerignore"}
|
dontexcludes := []string{"!Dockerfile", "!Containerfile", "!.dockerignore", "!.containerignore"}
|
||||||
for _, c := range containerFiles {
|
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" {
|
if c == "/dev/stdin" {
|
||||||
content, err := io.ReadAll(os.Stdin)
|
content, err := io.ReadAll(os.Stdin)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1135,6 +1135,12 @@ EOF
|
|||||||
run_podman rmi -f build_test
|
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() {
|
function teardown() {
|
||||||
# A timeout or other error in 'build' can leave behind stale images
|
# A timeout or other error in 'build' can leave behind stale images
|
||||||
# that podman can't even see and which will cascade into subsequent
|
# that podman can't even see and which will cascade into subsequent
|
||||||
|
Reference in New Issue
Block a user