feat:(unify): 新增容器和镜像管理
This commit is contained in:
parent
fad4b0b8c4
commit
bbb00b08ef
@ -1,6 +1,8 @@
|
|||||||
package com.aizuda.snailjob.server.common.alarm;
|
package com.aizuda.snailjob.server.common.alarm;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.io.FileUtil;
|
||||||
|
import cn.hutool.core.io.file.FileSystemUtil;
|
||||||
import com.aizuda.snailjob.common.core.alarm.Alarm;
|
import com.aizuda.snailjob.common.core.alarm.Alarm;
|
||||||
import com.aizuda.snailjob.common.core.alarm.AlarmContext;
|
import com.aizuda.snailjob.common.core.alarm.AlarmContext;
|
||||||
import com.aizuda.snailjob.common.core.alarm.SnailJobAlarmFactory;
|
import com.aizuda.snailjob.common.core.alarm.SnailJobAlarmFactory;
|
||||||
|
@ -19,10 +19,7 @@ import com.github.dockerjava.api.DockerClient;
|
|||||||
import com.github.dockerjava.api.async.ResultCallback;
|
import com.github.dockerjava.api.async.ResultCallback;
|
||||||
import com.github.dockerjava.api.async.ResultCallbackTemplate;
|
import com.github.dockerjava.api.async.ResultCallbackTemplate;
|
||||||
import com.github.dockerjava.api.command.*;
|
import com.github.dockerjava.api.command.*;
|
||||||
import com.github.dockerjava.api.model.Container;
|
import com.github.dockerjava.api.model.*;
|
||||||
import com.github.dockerjava.api.model.ContainerPort;
|
|
||||||
import com.github.dockerjava.api.model.Frame;
|
|
||||||
import com.github.dockerjava.api.model.Image;
|
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@ -77,6 +74,11 @@ public class DockerServiceImpl implements DockerService {
|
|||||||
CreateContainerResponse container = dockerClient
|
CreateContainerResponse container = dockerClient
|
||||||
.createContainerCmd(image)
|
.createContainerCmd(image)
|
||||||
.withName(containerName)
|
.withName(containerName)
|
||||||
|
.withEnv()
|
||||||
|
.withExposedPorts()
|
||||||
|
// .withHealthcheck()
|
||||||
|
|
||||||
|
// .withHostName(HostConfig)
|
||||||
.withLabels(labels)
|
.withLabels(labels)
|
||||||
.exec();
|
.exec();
|
||||||
|
|
||||||
|
@ -15,7 +15,9 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@ -98,7 +100,7 @@ public class PythonServiceImpl implements PythonService {
|
|||||||
|
|
||||||
List<File> dockerfileList = FileUtil.loopFiles(workdir, pathname -> pathname.getName().equals(MAIN_PY) || pathname.getName().endsWith(REQUIREMENTS_TXT));
|
List<File> dockerfileList = FileUtil.loopFiles(workdir, pathname -> pathname.getName().equals(MAIN_PY) || pathname.getName().endsWith(REQUIREMENTS_TXT));
|
||||||
|
|
||||||
List<File> mainFiles = StreamUtils.filter(dockerfileList, file -> file.getName().equals(MAIN_PY));
|
List<File> mainFiles = StreamUtils.filter(dockerfileList, file -> file.getName().equals(MAIN_PY) && !file.getPath().contains("packages"));
|
||||||
Assert.isFalse(mainFiles.isEmpty(), () -> new SnailJobServerException("不存在{}文件", MAIN_PY));
|
Assert.isFalse(mainFiles.isEmpty(), () -> new SnailJobServerException("不存在{}文件", MAIN_PY));
|
||||||
Assert.isTrue(mainFiles.size() == 1, () -> new SnailJobServerException("存在多个{}}文件", MAIN_PY));
|
Assert.isTrue(mainFiles.size() == 1, () -> new SnailJobServerException("存在多个{}}文件", MAIN_PY));
|
||||||
|
|
||||||
@ -125,8 +127,14 @@ public class PythonServiceImpl implements PythonService {
|
|||||||
System.out.println("Script exited with code: " + pipExitCode);
|
System.out.println("Script exited with code: " + pipExitCode);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// todo 从数据库读数据
|
||||||
|
Map<String, String> env = new HashMap<>();
|
||||||
|
env.put("SNAIL_HOST_PORT", "17890");
|
||||||
|
|
||||||
// 构建命令
|
// 构建命令
|
||||||
ProcessBuilder processBuilder = new ProcessBuilder(Lists.newArrayList(split[1].trim(), mainFiles.get(0).getPath()));
|
ProcessBuilder processBuilder = new ProcessBuilder(Lists.newArrayList(split[1].trim(), mainFiles.get(0).getPath()));
|
||||||
|
processBuilder.environment().putAll(env);
|
||||||
processBuilder.redirectErrorStream(true);
|
processBuilder.redirectErrorStream(true);
|
||||||
|
|
||||||
// 启动进程
|
// 启动进程
|
||||||
|
Loading…
Reference in New Issue
Block a user