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