feat:(unify): 新增容器和镜像管理

This commit is contained in:
opensnail 2024-12-18 22:03:20 +08:00
parent fad4b0b8c4
commit bbb00b08ef
3 changed files with 17 additions and 5 deletions

View File

@ -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;

View File

@ -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();

View File

@ -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);
// 启动进程