From 40314e9079fe4af65b9f61f55de80288a8c8d3b5 Mon Sep 17 00:00:00 2001 From: Snrat Date: Mon, 28 Jul 2025 18:34:05 +0800 Subject: [PATCH] Fix Issue with Podman Unable to Change PHP Runtime in Website Page (#9711) * Update container.go * Update website.go --- agent/app/service/container.go | 41 ++++++++++++++++++++-------------- agent/app/service/website.go | 4 ++-- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/agent/app/service/container.go b/agent/app/service/container.go index 8a8f8efe1..fae2133f2 100644 --- a/agent/app/service/container.go +++ b/agent/app/service/container.go @@ -1240,23 +1240,30 @@ func checkImageExist(client *client.Client, imageItem string) bool { return false } -func checkImageLike(imageName string) bool { - cli, err := docker.NewDockerClient() - if err != nil { - return false - } - images, err := cli.ImageList(context.Background(), image.ListOptions{}) - if err != nil { - return false - } - for _, img := range images { - for _, tag := range img.RepoTags { - if strings.Contains(tag, imageName) { - return true - } - } - } - return false +func checkImageLike(client *client.Client, imageName string) bool { + if client == nil { + var err error + client, err = docker.NewDockerClient() + if err != nil { + return false + } + } + images, err := client.ImageList(context.Background(), image.ListOptions{}) + if err != nil { + return false + } + + for _, img := range images { + for _, tag := range img.RepoTags { + parts := strings.Split(tag, "/") + imageNameWithTag := parts[len(parts)-1] + + if imageNameWithTag == imageName { + return true + } + } + } + return false } func pullImages(task *task.Task, client *client.Client, imageName string) error { diff --git a/agent/app/service/website.go b/agent/app/service/website.go index cbdf2e1f5..a5e940eea 100644 --- a/agent/app/service/website.go +++ b/agent/app/service/website.go @@ -388,7 +388,7 @@ func (w WebsiteService) CreateWebsite(create request.WebsiteCreate) (err error) switch runtime.Type { case constant.RuntimePHP: if runtime.Resource == constant.ResourceAppstore { - if !checkImageLike(runtime.Image) { + if !checkImageLike(nil, runtime.Image) { return buserr.WithName("ErrImageNotExist", runtime.Name) } website.Proxy = fmt.Sprintf("127.0.0.1:%s", runtime.Port) @@ -1354,7 +1354,7 @@ func (w WebsiteService) ChangePHPVersion(req request.WebsitePHPVersionReq) error return err } defer client.Close() - if !checkImageExist(client, oldRuntime.Image) { + if !checkImageLike(client, oldRuntime.Image) { return buserr.WithName("ErrImageNotExist", oldRuntime.Name) } }