fix: 解决 app 升级,container_name 改变的BUG

This commit is contained in:
zhengkunwang223
2023-02-22 15:09:40 +08:00
committed by zhengkunwang223
parent 0e11b18cd6
commit 37bcd12c8d
3 changed files with 30 additions and 14 deletions
+18 -7
View File
@@ -189,9 +189,7 @@ func (a AppService) Install(ctx context.Context, req request.AppInstallCreate) (
if err := checkRequiredAndLimit(app); err != nil {
return nil, err
}
if err := copyAppData(app.Key, appDetail.Version, req.Name, req.Params); err != nil {
return nil, err
}
paramByte, err := json.Marshal(req.Params)
if err != nil {
return nil, err
@@ -211,16 +209,25 @@ func (a AppService) Install(ctx context.Context, req request.AppInstallCreate) (
if err := yaml.Unmarshal([]byte(appDetail.DockerCompose), &composeMap); err != nil {
return nil, err
}
servicesMap := composeMap["services"].(map[string]interface{})
value, ok := composeMap["services"]
if !ok {
return nil, buserr.New("")
}
servicesMap := value.(map[string]interface{})
changeKeys := make(map[string]string, len(servicesMap))
for k, v := range servicesMap {
index := 0
for k := range servicesMap {
serviceName := k + "-" + common.RandStr(4)
changeKeys[k] = serviceName
value := v.(map[string]interface{})
containerName := constant.ContainerPrefix + k + "-" + common.RandStr(4)
value["container_name"] = containerName
if index > 0 {
continue
}
req.Params["CONTAINER_NAME"] = containerName
appInstall.ServiceName = serviceName
appInstall.ContainerName = containerName
index++
}
for k, v := range changeKeys {
servicesMap[v] = servicesMap[k]
@@ -232,6 +239,10 @@ func (a AppService) Install(ctx context.Context, req request.AppInstallCreate) (
}
appInstall.DockerCompose = string(composeByte)
if err := copyAppData(app.Key, appDetail.Version, req.Name, req.Params); err != nil {
return nil, err
}
fileOp := files.NewFileOp()
if err := fileOp.WriteFile(appInstall.GetComposePath(), strings.NewReader(string(composeByte)), 0775); err != nil {
return nil, err