我使用以下文章的镜像作为演示镜像,读者有自己的镜像可以使用自己的
TencentARC/GFPGAN人脸恢复Ubuntu-22.04搭建(附带Docker镜像)_tencentarc gfpgan-CSDN博客
1. 封装springboot 启动docker容器的方法
public String runDockerCommand(String[] command) {StringBuilder result = new StringBuilder();try {// 使用 ProcessBuilder 执行命令ProcessBuilder processBuilder = new ProcessBuilder(command);processBuilder.redirectErrorStream(true); // 将标准错误重定向到标准输出Process process = processBuilder.start();// 读取容器内的执行日志并打印到控制台BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line;log.info("====== Docker logs start ======");while ((line = reader.readLine()) != null) {log.info(line); // 打印日志到控制台}log.info("====== Docker logs end ======");// 等待进程执行完毕int exitCode = process.waitFor();if (exitCode != 0) {throw new RuntimeException("Docker 命令执行失败,退出代码: " + exitCode);}} catch (Exception e) {e.printStackTrace();return "Docker 命令执行失败: " + e.getMessage();}return result.toString(); // 返回执行日志}
2. 构造启动docker容器的启动命令,并调用启动docker容器的方法
此方法参数可以根据自己镜像所需修改参数
- inputPath为输入目录,如果用我的镜像的话就需要这个目录下有图片
- outputPath为图片清晰生成目录
public void runGFPGAN(String inputPath,String outputPath) {// 定义 Docker 命令,使用传入的参数String[] command = {"docker", "run", "--rm","-v", outputPath + ":/workspace/GFPGAN/results","-v", inputPath + ":/workspace/GFPGAN/inputs/whole_imgs","-e", "INPUT_PATH=/workspace/GFPGAN/inputs/whole_imgs","-e", "OUTPUT_PATH=/workspace/GFPGAN/results","registry.cn-hangzhou.aliyuncs.com/zr-dev/tencentarc:v1.0"};// 执行 Docker 命令this.runDockerCommand(command);}