feat:(unify): 新增容器和镜像管理
This commit is contained in:
parent
fad4b0b8c4
commit
bbb00b08ef
@ -1,6 +1,8 @@
|
||||
package com.aizuda.snailjob.server.common.alarm;
|
||||
|
||||
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.AlarmContext;
|
||||
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.ResultCallbackTemplate;
|
||||
import com.github.dockerjava.api.command.*;
|
||||
import com.github.dockerjava.api.model.Container;
|
||||
import com.github.dockerjava.api.model.ContainerPort;
|
||||
import com.github.dockerjava.api.model.Frame;
|
||||
import com.github.dockerjava.api.model.Image;
|
||||
import com.github.dockerjava.api.model.*;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -77,6 +74,11 @@ public class DockerServiceImpl implements DockerService {
|
||||
CreateContainerResponse container = dockerClient
|
||||
.createContainerCmd(image)
|
||||
.withName(containerName)
|
||||
.withEnv()
|
||||
.withExposedPorts()
|
||||
// .withHealthcheck()
|
||||
|
||||
// .withHostName(HostConfig)
|
||||
.withLabels(labels)
|
||||
.exec();
|
||||
|
||||
|
@ -15,7 +15,9 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@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> 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.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);
|
||||
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.environment().putAll(env);
|
||||
processBuilder.redirectErrorStream(true);
|
||||
|
||||
// 启动进程
|
||||
|
Loading…
Reference in New Issue
Block a user