fix: 解决多容器应用升级失败的问题 (#2090)

This commit is contained in:
zhengkunwang 2023-08-28 16:18:13 +08:00 committed by GitHub
parent 7ff9c75bdf
commit ac0f697111
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 17 deletions

View file

@ -782,8 +782,8 @@ func (a AppService) SyncAppListFromRemote() (err error) {
for _, v := range versions { for _, v := range versions {
version := v.Name version := v.Name
detail := detailsMap[version] detail := detailsMap[version]
versionUrl := fmt.Sprintf("%s/%s/%s", baseRemoteUrl, app.Key, version)
dockerComposeUrl := fmt.Sprintf("%s/%s/%s/%s", baseRemoteUrl, app.Key, version, "docker-compose.yml") dockerComposeUrl := fmt.Sprintf("%s/%s", versionUrl, "docker-compose.yml")
composeRes, err := http.Get(dockerComposeUrl) composeRes, err := http.Get(dockerComposeUrl)
if err != nil { if err != nil {
return err return err
@ -796,7 +796,7 @@ func (a AppService) SyncAppListFromRemote() (err error) {
paramByte, _ := json.Marshal(v.AppForm) paramByte, _ := json.Marshal(v.AppForm)
detail.Params = string(paramByte) detail.Params = string(paramByte)
detail.DownloadUrl = v.DownloadUrl detail.DownloadUrl = fmt.Sprintf("%s/%s", versionUrl, app.Key+"-"+version+".tar.gz")
detail.DownloadCallBackUrl = v.DownloadCallBackUrl detail.DownloadCallBackUrl = v.DownloadCallBackUrl
detail.Update = true detail.Update = true
detail.LastModified = v.LastModified detail.LastModified = v.LastModified

View file

@ -318,20 +318,21 @@ func upgradeInstall(installId uint, detailId uint, backup bool) error {
return return
} }
servicesMap := value.(map[string]interface{}) servicesMap := value.(map[string]interface{})
index := 0 if len(servicesMap) == 1 {
oldServiceName := "" index := 0
for k := range servicesMap { oldServiceName := ""
oldServiceName = k for k := range servicesMap {
index++ oldServiceName = k
if index > 0 { index++
break if index > 0 {
break
}
}
servicesMap[install.ServiceName] = servicesMap[oldServiceName]
if install.ServiceName != oldServiceName {
delete(servicesMap, oldServiceName)
} }
} }
servicesMap[install.ServiceName] = servicesMap[oldServiceName]
if install.ServiceName != oldServiceName {
delete(servicesMap, oldServiceName)
}
envs := make(map[string]interface{}) envs := make(map[string]interface{})
if upErr = json.Unmarshal([]byte(install.Env), &envs); upErr != nil { if upErr = json.Unmarshal([]byte(install.Env), &envs); upErr != nil {
return return
@ -518,7 +519,7 @@ func downloadApp(app model.App, appDetail model.AppDetail, appInstall *model.App
_ = fileOp.CreateDir(appVersionDir, 0755) _ = fileOp.CreateDir(appVersionDir, 0755)
} }
global.LOG.Infof("download app[%s] from %s", app.Name, appDetail.DownloadUrl) global.LOG.Infof("download app[%s] from %s", app.Name, appDetail.DownloadUrl)
filePath := path.Join(appVersionDir, appDetail.Version+".tar.gz") filePath := path.Join(appVersionDir, app.Key+"-"+appDetail.Version+".tar.gz")
defer func() { defer func() {
if err != nil { if err != nil {
@ -533,7 +534,7 @@ func downloadApp(app model.App, appDetail model.AppDetail, appInstall *model.App
global.LOG.Errorf("download app[%s] error %v", app.Name, err) global.LOG.Errorf("download app[%s] error %v", app.Name, err)
return return
} }
if err = fileOp.Decompress(filePath, appVersionDir, files.TarGz); err != nil { if err = fileOp.Decompress(filePath, appResourceDir, files.TarGz); err != nil {
global.LOG.Errorf("decompress app[%s] error %v", app.Name, err) global.LOG.Errorf("decompress app[%s] error %v", app.Name, err)
return return
} }

View file

@ -103,6 +103,12 @@ func (u *SettingService) Update(key, value string) error {
if err := ntp.UpdateSystemTimeZone(value); err != nil { if err := ntp.UpdateSystemTimeZone(value); err != nil {
return err return err
} }
case "AppStoreLastModified":
exist, _ := settingRepo.Get(settingRepo.WithByKey("AppStoreLastModified"))
if exist.ID == 0 {
_ = settingRepo.Create("AppStoreLastModified", value)
return nil
}
} }
if err := settingRepo.Update(key, value); err != nil { if err := settingRepo.Update(key, value); err != nil {
@ -128,6 +134,7 @@ func (u *SettingService) Update(key, value string) error {
} }
case "UserName", "Password": case "UserName", "Password":
_ = global.SESSION.Clean() _ = global.SESSION.Clean()
} }
return nil return nil