From 721a1e104e388a788ab5760019fa91bcf1a5d762 Mon Sep 17 00:00:00 2001 From: Matej Vasek Date: Mon, 8 Feb 2021 19:17:38 +0100 Subject: Fix Docker APIv2 push endpoint Docker doesn't have the destination parameter as libpod does, the "image name" path parameter is supposed to be the destination. Signed-off-by: Matej Vasek --- pkg/api/handlers/compat/images_push.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'pkg') diff --git a/pkg/api/handlers/compat/images_push.go b/pkg/api/handlers/compat/images_push.go index c352ac6cd..34b53f34e 100644 --- a/pkg/api/handlers/compat/images_push.go +++ b/pkg/api/handlers/compat/images_push.go @@ -1,7 +1,6 @@ package compat import ( - "context" "net/http" "strings" @@ -76,7 +75,15 @@ func PushImage(w http.ResponseWriter, r *http.Request) { if _, found := r.URL.Query()["tlsVerify"]; found { options.SkipTLSVerify = types.NewOptionalBool(!query.TLSVerify) } - if err := imageEngine.Push(context.Background(), imageName, query.Destination, options); err != nil { + + var destination string + if _, found := r.URL.Query()["destination"]; found { + destination = query.Destination + } else { + destination = imageName + } + + if err := imageEngine.Push(r.Context(), imageName, destination, options); err != nil { if errors.Cause(err) != storage.ErrImageUnknown { utils.ImageNotFound(w, imageName, errors.Wrapf(err, "failed to find image %s", imageName)) return -- cgit v1.2.3-54-g00ecf