Browse Source

DockerBuild#dockerBuildCompile 方法中设置一个 300s 的超时

reghao 3 weeks ago
parent
commit
bc34bee45c

+ 8 - 1
mgr/src/main/java/cn/reghao/devops/mgr/ops/builder/tool/DockerBuild.java

@@ -21,6 +21,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Collections;
 import java.util.List;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 
 /**
 /**
@@ -91,7 +92,13 @@ public class DockerBuild {
             for (KeyValue keyValue : keyValueList) {
             for (KeyValue keyValue : keyValueList) {
                 buildImageCmd.withBuildArg(keyValue.getKey(), keyValue.getValue());
                 buildImageCmd.withBuildArg(keyValue.getKey(), keyValue.getValue());
             }
             }
-            buildImageCmd.exec(callback).awaitCompletion();
+
+            int timeoutInSeconds = 300;
+            boolean completed = buildImageCmd.exec(callback).awaitCompletion(timeoutInSeconds, TimeUnit.MINUTES);
+            if (!completed) {
+                callback.close(); // 必须关闭以释放资源并中断连接
+                throw new RuntimeException("Docker Build timed out after " + timeoutInSeconds + " seconds");
+            }
             /*dockerClient.buildImageCmd()
             /*dockerClient.buildImageCmd()
                     .withCpushares("512")
                     .withCpushares("512")
                     .withMemory(1024 * 1024 * 1024L)
                     .withMemory(1024 * 1024 * 1024L)