From b6a1cee9c6fbfe0a1f8f7c410c637248e29239e5 Mon Sep 17 00:00:00 2001
From: wzp <2040239371@qq.com>
Date: 星期五, 18 七月 2025 10:22:17 +0800
Subject: [PATCH] fix:修复docker不能正常清理的问题。设置60s超时时间

---
 src/main/java/com/ots/project/tool/PdfDockerUtil.java |   71 ++++++++---------------------------
 1 files changed, 17 insertions(+), 54 deletions(-)

diff --git a/src/main/java/com/ots/project/tool/PdfDockerUtil.java b/src/main/java/com/ots/project/tool/PdfDockerUtil.java
index bb7fa72..7ef1a63 100644
--- a/src/main/java/com/ots/project/tool/PdfDockerUtil.java
+++ b/src/main/java/com/ots/project/tool/PdfDockerUtil.java
@@ -285,67 +285,27 @@
      * 鏍规嵁鍓嶇紑娓呯悊瀹瑰櫒
      */
     private void cleanupContainersByPrefix() {
-        try {
-            // 鏌ユ壘鎵�鏈夎繍琛屼腑鐨勭浉鍏冲鍣�
-            String runningCommand = "docker ps --filter name=" + CONTAINER_NAME_PREFIX + "* --format '{{.Names}}'";
-            Process runningProc = Runtime.getRuntime().exec(runningCommand);
-            BufferedReader runningReader = new BufferedReader(new InputStreamReader(runningProc.getInputStream()));
-            
-            String containerName;
-            while ((containerName = runningReader.readLine()) != null) {
-                if (!containerName.trim().isEmpty()) {
-                    log.warn("寮哄埗鍋滄杩愯涓殑瀹瑰櫒: {}", containerName);
-                    
-                    // 寮哄埗鍋滄瀹瑰櫒
-                    String killCommand = "docker kill " + containerName;
-                    Process killProc = Runtime.getRuntime().exec(killCommand);
-                    killProc.waitFor(10, TimeUnit.SECONDS);
-                    
-                    // 寮哄埗鍒犻櫎瀹瑰櫒
-                    String rmCommand = "docker rm -f " + containerName;
-                    Process rmProc = Runtime.getRuntime().exec(rmCommand);
-                    rmProc.waitFor(10, TimeUnit.SECONDS);
-                    
-                    log.info("宸插己鍒舵竻鐞嗗鍣�: {}", containerName);
-                }
-            }
-            runningReader.close();
-            runningProc.waitFor(10, TimeUnit.SECONDS);
-            
-            // 鏌ユ壘鎵�鏈夊仠姝㈢殑鐩稿叧瀹瑰櫒骞跺垹闄�
-            String stoppedCommand = "docker ps -a --filter name=" + CONTAINER_NAME_PREFIX + "* --format '{{.Names}}'";
-            Process stoppedProc = Runtime.getRuntime().exec(stoppedCommand);
-            BufferedReader stoppedReader = new BufferedReader(new InputStreamReader(stoppedProc.getInputStream()));
-            
-            while ((containerName = stoppedReader.readLine()) != null) {
-                if (!containerName.trim().isEmpty()) {
-                    log.warn("寮哄埗鍒犻櫎鍋滄鐨勫鍣�: {}", containerName);
-                    
-                    // 寮哄埗鍒犻櫎瀹瑰櫒
-                    String rmCommand = "docker rm -f " + containerName;
-                    Process rmProc = Runtime.getRuntime().exec(rmCommand);
-                    rmProc.waitFor(10, TimeUnit.SECONDS);
-                    
-                    log.info("宸插己鍒跺垹闄ゅ鍣�: {}", containerName);
-                }
-            }
-            stoppedReader.close();
-            stoppedProc.waitFor(10, TimeUnit.SECONDS);
-            
-        } catch (Exception e) {
-            log.error("鏍规嵁鍓嶇紑娓呯悊瀹瑰櫒澶辫触", e);
-        }
+        cleanupContainersByFilter("name=" + CONTAINER_NAME_PREFIX + "*", "鍓嶇紑");
     }
     
     /**
      * 鏍规嵁闀滃儚鍚嶇О娓呯悊瀹瑰櫒
      */
     private void cleanupContainersByImage(String imageName) {
+        cleanupContainersByFilter("ancestor=" + imageName, "闀滃儚 " + imageName);
+    }
+    
+    /**
+     * 閫氱敤鐨勫鍣ㄦ竻鐞嗘柟娉�
+     * @param filter 杩囨护鏉′欢锛屽 name=prefix*" 鎴� "ancestor=imageName"
+     * @param filterDesc 杩囨护鏉′欢鎻忚堪锛岀敤浜庢棩蹇楄緭鍑�
+     */
+    private void cleanupContainersByFilter(String filter, String filterDesc) {
         try {
-            log.info("娓呯悊闀滃儚涓� {} 鐨勫鍣�", imageName);
+            log.info("娓呯悊{}瀹瑰櫒", filterDesc);
             
             // 鏌ユ壘鎵�鏈夎繍琛屼腑鐨勭浉鍏冲鍣�
-            String runningCommand = "docker ps --filter ancestor=" + imageName + " --format '{{.Names}}'";
+            String runningCommand = "docker ps --filter " + filter + " --format '{{.Names}}'";
             Process runningProc = Runtime.getRuntime().exec(runningCommand);
             BufferedReader runningReader = new BufferedReader(new InputStreamReader(runningProc.getInputStream()));
             
@@ -361,6 +321,8 @@
                     
                     // 寮哄埗鍒犻櫎瀹瑰櫒
                     String rmCommand = "docker rm -f " + containerName;
+                    log.info("鎵ц鍛戒护: {}", rmCommand);
+
                     Process rmProc = Runtime.getRuntime().exec(rmCommand);
                     rmProc.waitFor(10, TimeUnit.SECONDS);
                     
@@ -371,7 +333,7 @@
             runningProc.waitFor(10, TimeUnit.SECONDS);
             
             // 鏌ユ壘鎵�鏈夊仠姝㈢殑鐩稿叧瀹瑰櫒骞跺垹闄�
-            String stoppedCommand = "docker ps -a --filter ancestor=" + imageName + " --format '{{.Names}}'";
+            String stoppedCommand = "docker ps -a --filter " + filter + " --format '{{.Names}}'";
             Process stoppedProc = Runtime.getRuntime().exec(stoppedCommand);
             BufferedReader stoppedReader = new BufferedReader(new InputStreamReader(stoppedProc.getInputStream()));
             
@@ -381,6 +343,7 @@
                     
                     // 寮哄埗鍒犻櫎瀹瑰櫒
                     String rmCommand = "docker rm -f " + containerName;
+                    log.info("鎵ц鍛戒护: {}", rmCommand);
                     Process rmProc = Runtime.getRuntime().exec(rmCommand);
                     rmProc.waitFor(10, TimeUnit.SECONDS);
                     
@@ -391,7 +354,7 @@
             stoppedProc.waitFor(10, TimeUnit.SECONDS);
             
         } catch (Exception e) {
-            log.error("鏍规嵁闀滃儚娓呯悊瀹瑰櫒澶辫触", e);
+            log.error("鏍规嵁{}娓呯悊瀹瑰櫒澶辫触", filterDesc, e);
         }
     }
     

--
Gitblit v1.9.1