From 40bb4b68714f5489b81b1f5670d3f490af4c8181 Mon Sep 17 00:00:00 2001 From: zhengkunwang223 <1paneldev@sina.com> Date: Tue, 4 Aug 2026 18:15:44 +0800 Subject: [PATCH 1/2] fix: Fixed issue with upgrade openresty failed --- agent/app/service/app_upgrade.go | 35 ++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/agent/app/service/app_upgrade.go b/agent/app/service/app_upgrade.go index 0a9caa3a965f..0592f9a2cd38 100644 --- a/agent/app/service/app_upgrade.go +++ b/agent/app/service/app_upgrade.go @@ -5,6 +5,7 @@ import ( "encoding/json" "errors" "fmt" + "maps" "os" "path" "sort" @@ -255,7 +256,7 @@ func (u *appUpgradeContext) prepare(t *task.Task) error { return buserr.WithName("ErrFileNotFound", "docker-compose.yml") } - u.envContent, err = renderUpgradeEnv(u.candidate, u.oldEnvContent) + u.envContent, err = renderUpgradeEnv(&u.candidate, u.oldEnvContent) if err != nil { return err } @@ -699,18 +700,40 @@ func verifyUpgradeImages(images []string) error { return nil } -func renderUpgradeEnv(install model.AppInstall, original []byte) ([]byte, error) { +func renderUpgradeEnv(install *model.AppInstall, original []byte) ([]byte, error) { + originalEnv, err := gotenv.Unmarshal(string(original)) + if err != nil { + return nil, err + } + params := maps.Clone(originalEnv) envs := make(map[string]interface{}) if err := json.Unmarshal([]byte(install.Env), &envs); err != nil { return nil, err } - params := make(map[string]string, len(envs)) handleMap(envs, params) if install.App.Key == constant.AppOpenresty { - originalEnv, _ := gotenv.Unmarshal(string(original)) for _, key := range []string{"CONTAINER_PACKAGE_URL", "RESTY_ADD_PACKAGE_BUILDDEPS", "RESTY_CONFIG_OPTIONS_MORE"} { - params[key] = originalEnv[key] + if value, ok := originalEnv[key]; ok { + params[key] = value + } + } + if websiteDir := strings.TrimSpace(originalEnv["WEBSITE_DIR"]); websiteDir != "" { + params["WEBSITE_DIR"] = websiteDir + } + websiteDir := strings.TrimSpace(params["WEBSITE_DIR"]) + if websiteDir == "" { + websiteDir = NewISettingService().GetWebsiteDir() + } + if !path.IsAbs(websiteDir) { + websiteDir = path.Join(global.Dir.DataDir, websiteDir) + } + params["WEBSITE_DIR"] = websiteDir + envs["WEBSITE_DIR"] = websiteDir + content, marshalErr := json.Marshal(envs) + if marshalErr != nil { + return nil, marshalErr } + install.Env = string(content) } content, err := gotenv.Marshal(params) if err != nil { @@ -847,7 +870,7 @@ func waitAppContainersReady(ctx context.Context, install model.AppInstall) ([]st func waitAppContainersReadyWithClient(ctx context.Context, client appContainerReadinessClient, install model.AppInstall) ([]string, error) { envContent, err := os.ReadFile(install.GetEnvPath()) if err != nil { - envContent, err = renderUpgradeEnv(install, nil) + envContent, err = renderUpgradeEnv(&install, nil) if err != nil { return nil, err } From 586633cdedd42281a3a3c5d4a1ac1dc3ea440fa4 Mon Sep 17 00:00:00 2001 From: zhengkunwang223 <1paneldev@sina.com> Date: Tue, 4 Aug 2026 18:32:35 +0800 Subject: [PATCH 2/2] fix: Fixed issue with upgrade openresty failed --- agent/app/service/app_upgrade.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/agent/app/service/app_upgrade.go b/agent/app/service/app_upgrade.go index 0592f9a2cd38..08e9a0aaced1 100644 --- a/agent/app/service/app_upgrade.go +++ b/agent/app/service/app_upgrade.go @@ -27,7 +27,7 @@ import ( "github.com/1Panel-dev/1Panel/agent/utils/files" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/filters" - "github.com/subosito/gotenv" + "github.com/joho/godotenv" ) type appUpgradePhase int @@ -701,11 +701,16 @@ func verifyUpgradeImages(images []string) error { } func renderUpgradeEnv(install *model.AppInstall, original []byte) ([]byte, error) { - originalEnv, err := gotenv.Unmarshal(string(original)) - if err != nil { - return nil, err + originalEnv := make(map[string]string) + if len(original) > 0 { + var err error + originalEnv, err = godotenv.UnmarshalBytes(original) + if err != nil { + return nil, err + } } - params := maps.Clone(originalEnv) + params := make(map[string]string, len(originalEnv)) + maps.Copy(params, originalEnv) envs := make(map[string]interface{}) if err := json.Unmarshal([]byte(install.Env), &envs); err != nil { return nil, err @@ -735,7 +740,7 @@ func renderUpgradeEnv(install *model.AppInstall, original []byte) ([]byte, error } install.Env = string(content) } - content, err := gotenv.Marshal(params) + content, err := godotenv.Marshal(params) if err != nil { return nil, err }