Преглед изворни кода

修改 docker 由于模糊查找容器名字导致多个容器返回的问题

reghao пре 4 година
родитељ
комит
d5c388f894

+ 12 - 13
common/src/main/java/cn/reghao/autodop/common/docker/DockerImpl.java

@@ -18,8 +18,10 @@ import com.github.dockerjava.transport.DockerHttpClient;
 import java.io.File;
 import java.io.IOException;
 import java.time.Duration;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * Docker 客户端
@@ -136,19 +138,19 @@ public class DockerImpl implements Docker {
     }
 
     @Override
-    public String getContainerIdByName(String containerName) throws DockerException {
+    public String getContainerIdByName(String containerName) {
         List<Container> list = dockerClient.listContainersCmd()
                 .withShowAll(true)
                 .withNameFilter(List.of(containerName))
                 .exec();
-        if (list.size() > 1) {
-            String msg = String.format("有多个名字为 %s 的容器", containerName);
-            throw new DockerException(msg);
-        } else if (list.size() == 1) {
-            return list.get(0).getId();
-        } else {
-            return null;
+
+        for (Container container : list) {
+            if (Arrays.stream(container.getNames()).collect(Collectors.toSet()).contains(containerName)) {
+                return container.getId();
+            }
         }
+
+        return null;
     }
 
     @Override
@@ -205,11 +207,8 @@ public class DockerImpl implements Docker {
 
     public static void main(String[] args) throws DockerException {
         Docker docker = new DockerImpl();
-        String appId = "dnkt-dev";
+        String appId = "dnkt";
         String containerId = docker.getContainerIdByName(appId);
-        if (containerId != null) {
-            InspectContainerResponse containerInfo = docker.inspectContainer(containerId);
-            System.out.println();
-        }
+        System.out.println();
     }
 }

+ 1 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/impl/AppDeployConfigServiceImpl.java

@@ -85,6 +85,7 @@ public class AppDeployConfigServiceImpl implements AppDeployConfigService {
             return Result.result(ResultStatus.ERROR, msg);
         }
 
+        // TODO 需要修改部署的机器功能
         appDeployConfig.setStartScript(appDeployConfigDto.getStartScript());
         deployConfigCrud.update(appDeployConfig);
         return Result.result(ResultStatus.SUCCESS, "更新 startScript 成功");