diff --git a/backend/app/service/app_install.go b/backend/app/service/app_install.go index 07909ad3b..2232b288c 100644 --- a/backend/app/service/app_install.go +++ b/backend/app/service/app_install.go @@ -376,13 +376,17 @@ func syncById(installId uint) error { errorContainers []string notFoundContainers []string runningContainers []string + exitedContainers []string ) for _, n := range containers { - if n.State != "running" { - errorContainers = append(errorContainers, n.Names[0]) - } else { + switch n.State { + case "exited": + exitedContainers = append(exitedContainers, n.Names[0]) + case "running": runningContainers = append(runningContainers, n.Names[0]) + default: + errorContainers = append(errorContainers, n.Names[0]) } } for _, old := range containerNames { @@ -401,6 +405,7 @@ func syncById(installId uint) error { containerCount := len(containers) errCount := len(errorContainers) notFoundCount := len(notFoundContainers) + existedCount := len(exitedContainers) normalCount := len(containerNames) runningCount := len(runningContainers) @@ -409,16 +414,17 @@ func syncById(installId uint) error { appInstall.Message = "container is not found" return appInstallRepo.Save(&appInstall) } - if errCount == 0 && notFoundCount == 0 { + if errCount == 0 && existedCount == 0 { appInstall.Status = constant.Running return appInstallRepo.Save(&appInstall) } + if existedCount == normalCount { + appInstall.Status = constant.Stopped + return appInstallRepo.Save(&appInstall) + } if errCount == normalCount { appInstall.Status = constant.Error } - if notFoundCount == normalCount { - appInstall.Status = constant.Stopped - } if runningCount < normalCount { appInstall.Status = constant.UnHealthy } diff --git a/backend/utils/compose/compose.go b/backend/utils/compose/compose.go index fbdd234dd..2362db7f2 100644 --- a/backend/utils/compose/compose.go +++ b/backend/utils/compose/compose.go @@ -13,7 +13,7 @@ func Up(filePath string) (string, error) { } func Down(filePath string) (string, error) { - cmd := exec.Command("docker-compose", "-f", filePath, "down") + cmd := exec.Command("docker-compose", "-f", filePath, "stop") stdout, err := cmd.CombinedOutput() return string(stdout), err } diff --git a/frontend/src/views/app-store/installed/index.vue b/frontend/src/views/app-store/installed/index.vue index 624613777..69302e0ff 100644 --- a/frontend/src/views/app-store/installed/index.vue +++ b/frontend/src/views/app-store/installed/index.vue @@ -50,9 +50,7 @@ trigger="hover" :content="row.message" > - +