From bc80dfdc68e95d82e21cf421fb040c31083d6b58 Mon Sep 17 00:00:00 2001 From: zhengkunwang <31820853+zhengkunwang223@users.noreply.github.com> Date: Tue, 31 Oct 2023 17:53:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3=20PHP=20=E7=BD=91?= =?UTF-8?q?=E7=AB=99=E5=88=87=E6=8D=A2=E7=89=88=E6=9C=AC=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=20serviceName=20=E5=8F=98=E6=9B=B4=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20(#2737)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs https://github.com/1Panel-dev/1Panel/issues/2689 --- backend/app/service/website.go | 11 ++++++++-- backend/app/service/website_utils.go | 32 ++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/backend/app/service/website.go b/backend/app/service/website.go index cd78c5f79..4d52e0f6e 100644 --- a/backend/app/service/website.go +++ b/backend/app/service/website.go @@ -1313,6 +1313,7 @@ func (w WebsiteService) ChangePHPVersion(req request.WebsitePHPVersionReq) error fpmConfDir = path.Join(confDir, "php-fpm.conf") phpDir = path.Join(constant.RuntimeDir, runtime.Type, runtime.Name, "php") oldFmContent, _ = fileOp.GetContent(fpmConfDir) + newComposeByte []byte ) envParams := make(map[string]string, len(envs)) handleMap(envs, envParams) @@ -1332,7 +1333,13 @@ func (w WebsiteService) ChangePHPVersion(req request.WebsitePHPVersionReq) error if busErr = env.Write(envParams, envPath); busErr != nil { return busErr } - if busErr = fileOp.WriteFile(composePath, strings.NewReader(appDetail.DockerCompose), 0775); busErr != nil { + + newComposeByte, busErr = changeServiceName(composePath, appInstall.ServiceName) + if busErr != nil { + return err + } + + if busErr = fileOp.WriteFile(composePath, bytes.NewReader(newComposeByte), 0775); busErr != nil { return busErr } if !req.RetainConfig { @@ -1362,7 +1369,7 @@ func (w WebsiteService) ChangePHPVersion(req request.WebsitePHPVersionReq) error appInstall.AppDetailId = runtime.AppDetailID appInstall.AppId = appDetail.AppId appInstall.Version = appDetail.Version - appInstall.DockerCompose = appDetail.DockerCompose + appInstall.DockerCompose = string(newComposeByte) _ = appInstallRepo.Save(context.Background(), &appInstall) website.RuntimeID = req.RuntimeID diff --git a/backend/app/service/website_utils.go b/backend/app/service/website_utils.go index a1591622b..35a4ecaa2 100644 --- a/backend/app/service/website_utils.go +++ b/backend/app/service/website_utils.go @@ -5,6 +5,7 @@ import ( "github.com/1Panel-dev/1Panel/backend/buserr" "github.com/1Panel-dev/1Panel/backend/utils/cmd" "github.com/1Panel-dev/1Panel/backend/utils/nginx/components" + "gopkg.in/yaml.v3" "path" "strconv" "strings" @@ -641,3 +642,34 @@ func chownRootDir(path string) error { } return nil } + +func changeServiceName(composePath, newServiceName string) (composeByte []byte, err error) { + composeMap := make(map[string]interface{}) + fileOp := files.NewFileOp() + composeContent, _ := fileOp.GetContent(composePath) + if err = yaml.Unmarshal(composeContent, &composeMap); err != nil { + return + } + value, ok := composeMap["services"] + if !ok { + err = buserr.New(constant.ErrFileParse) + return + } + servicesMap := value.(map[string]interface{}) + + index := 0 + serviceName := "" + for k := range servicesMap { + serviceName = k + if index > 0 { + continue + } + index++ + } + if newServiceName != serviceName { + servicesMap[newServiceName] = servicesMap[serviceName] + delete(servicesMap, serviceName) + } + + return yaml.Marshal(composeMap) +}