From dd1d93e0964e4a1388a10b9404b70640db95c147 Mon Sep 17 00:00:00 2001
From: CityFun <31820853+zhengkunwang223@users.noreply.github.com>
Date: Thu, 19 Jun 2025 15:06:59 +0800
Subject: [PATCH] fix: fix issue with docker cmd not close (#9182)
---
agent/app/service/container.go | 8 ++++++++
frontend/src/components/status/index.vue | 8 ++------
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/agent/app/service/container.go b/agent/app/service/container.go
index dbc489478..803ba185b 100644
--- a/agent/app/service/container.go
+++ b/agent/app/service/container.go
@@ -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()
}
}()
diff --git a/frontend/src/components/status/index.vue b/frontend/src/components/status/index.vue
index 8d2bf4834..f38e58794 100644
--- a/frontend/src/components/status/index.vue
+++ b/frontend/src/components/status/index.vue
@@ -26,12 +26,8 @@
-
-
+
+