huangxingxing преди 5 месеца
родител
ревизия
cab7f3c6a3
променени са 2 файла, в които са добавени 36 реда и са изтрити 3 реда
  1. 1 1
      src/main/java/com/miniframe/bisiness/mdo/MDO0039Service.java
  2. 35 2
      src/main/java/com/miniframe/tools/docker/DockerExe.java

+ 1 - 1
src/main/java/com/miniframe/bisiness/mdo/MDO0039Service.java

@@ -168,7 +168,7 @@ public class MDO0039Service extends MDO0039BaseModel implements ExecProcessFlow
 
 		LogService.addLog(pid,"求解——————————————————开始");
 		DockerExe.stopDocker(pid);
-		DockerExe.runMdo2(pid);
+		DockerExe.runMdo3(pid);
 		final int[] con = {0};
 		final String[] line = {""};
 		CompletableFuture<Void> cf = CompletableFuture.supplyAsync(()-> {try {

+ 35 - 2
src/main/java/com/miniframe/tools/docker/DockerExe.java

@@ -153,7 +153,40 @@ public class DockerExe {
     }
 
 
+    public static void runMdo3(String pid) {
+        DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
+                .withDockerHost(DOCKERHOST) // 设置 Docker 主机地址
+                .withDockerTlsVerify(false) // 启用 TLS 验证
+                .withApiVersion(APIVERSION) // 设置 API 版本
+                .build();
+        DockerHttpClient httpClient = new ApacheDockerHttpClient.Builder()
+                .dockerHost(config.getDockerHost())
+                .sslConfig(config.getSSLConfig())
+                .build();
+        DockerClient dockerClient = DockerClientBuilder.getInstance(config)
+                .withDockerHttpClient(httpClient)
+                .build();
+
+        Mount wokerMount = new Mount()
+                .withType(MountType.BIND)
+                .withSource("/cephfs/mdo/"+pid+"/in/")
+                .withTarget("/cephfs/mdo/"+pid+"/in/")
+                .withReadOnly(false);
+        List<Mount> am =new ArrayList<>();
+        am.add(wokerMount);
 
+        //创建容器
+        CreateContainerResponse container = dockerClient
+                .createContainerCmd("surromdao:2.0")//镜像名称
+                .withName(pid)//容器名称
+                .withHostConfig(
+                        HostConfig.newHostConfig()
+                                .withMounts(am)
+                ).withCmd("bash", "-c", "source /home/mdo/aeroelastic.sh && cd /cephfs/mdo/"+pid+"/in && conda activate surromdao && mpiexec -n 1 python run.py")
+                .exec();
+        dockerClient.startContainerCmd(container.getId()).exec();
+        System.out.println("容器启动成功,ID: " + container.getId());
+    }
 
     public static void runMdo2(String pid) {
         DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
@@ -179,12 +212,12 @@ public class DockerExe {
 
         //创建容器
         CreateContainerResponse container = dockerClient
-                .createContainerCmd("surromdao:2.0")//镜像名称
+                .createContainerCmd("surromdao:1.0")//镜像名称
                 .withName(pid)//容器名称
                 .withHostConfig(
                         HostConfig.newHostConfig()
                                 .withMounts(am)
-                ).withCmd("bash", "-c", "source /home/mdo/aeroelastic.sh && cd /cephfs/mdo/"+pid+"/in && conda activate surromdao && mpiexec -n 1 python run.py")
+                ).withCmd("bash", "-c", "source /home/mdo/aeroelastic.sh && cd /cephfs/mdo/"+pid+"/in && mpiexec -n 1 python run.py")
                 .exec();
         dockerClient.startContainerCmd(container.getId()).exec();
         System.out.println("容器启动成功,ID: " + container.getId());