fix: fix issue with docker cmd not close (#9182)

This commit is contained in:
CityFun 2025-06-19 15:06:59 +08:00 committed by GitHub
parent e4b24f51fc
commit dd1d93e096
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 6 deletions

View file

@ -933,6 +933,7 @@ func collectLogs(done <-chan struct{}, params dto.StreamLog, messageChan chan<-
}
dockerCmd := exec.Command("docker", cmdArgs...)
dockerCmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
stdout, err := dockerCmd.StdoutPipe()
if err != nil {
@ -949,7 +950,11 @@ func collectLogs(done <-chan struct{}, params dto.StreamLog, messageChan chan<-
defer func() {
if dockerCmd.Process != nil {
if pgid, err := syscall.Getpgid(dockerCmd.Process.Pid); err == nil {
_ = syscall.Kill(-pgid, syscall.SIGKILL)
}
_ = dockerCmd.Process.Kill()
_ = dockerCmd.Wait()
}
}()
@ -960,6 +965,9 @@ func collectLogs(done <-chan struct{}, params dto.StreamLog, messageChan chan<-
<-done
if !processKilled && dockerCmd.Process != nil {
processKilled = true
if pgid, err := syscall.Getpgid(dockerCmd.Process.Pid); err == nil {
_ = syscall.Kill(-pgid, syscall.SIGKILL)
}
_ = dockerCmd.Process.Kill()
}
}()

View file

@ -26,12 +26,8 @@
<el-icon v-if="loadingIcon(statusItem)" class="is-loading">
<Loading />
</el-icon>
<el-icon size="15" v-else>
<svg-icon
iconName="p-stop"
class="status-icon"
v-if="statusItem == 'stopped' || statusItem == 'exited'"
></svg-icon>
<el-icon size="15" v-else class="status-icon">
<svg-icon iconName="p-stop" v-if="statusItem == 'stopped' || statusItem == 'exited'"></svg-icon>
<svg-icon iconName="p-start" class="svg-icon" v-if="statusItem == 'running'"></svg-icon>
</el-icon>
</el-button>