SpringBoot 整合docker,执行容器服务

我使用以下文章的镜像作为演示镜像,读者有自己的镜像可以使用自己的
TencentARC/GFPGAN人脸恢复Ubuntu-22.04搭建(附带Docker镜像)_tencentarc gfpgan-CSDN博客

1. 封装springboot 启动docker容器的方法

java 复制代码
   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为图片清晰生成目录
java 复制代码
    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);
    }

3. 启动测试

相关推荐
千寻girling17 小时前
滑动窗口刷了快一个月(26天)了 , 还没有刷完. | 含(操作系统学什么的Java 后端)
java·开发语言·javascript·c++·人工智能·后端·python
小手cool17 小时前
Java字符串按空行分割,包括末尾的空行
java
呱牛do it17 小时前
企业级门户网站设计与实现:基于SpringBoot + Vue3的全栈解决方案(Day 9)
java
炸裂狸花猫17 小时前
开源身份认证与访问管理平台 - Keycloak(二)
docker·云原生·容器·kubernetes·开源·keycloak·sso
鸡蛋灌Bean17 小时前
mybatis分页深入了解
java·数据库·mybatis
野生技术架构师17 小时前
Tomcat Service的设计和实现:StandardService
java·tomcat
炸裂狸花猫17 小时前
开源身份认证与访问管理平台 - Keycloak(一)
docker·云原生·kubernetes·开源·devops
rustfs17 小时前
MinIO 国产平替,RustFS 发布 Beta 版本啦
分布式·docker·云原生·rust·开源
Gofarlic_OMS18 小时前
UG/NX许可证管理高频技术问题解答汇编
java·大数据·运维·服务器·汇编·人工智能
逐星ing18 小时前
IDEA 无法识别 `mvn install` 最新 SNAPSHOT 依赖的根因与完整解决方案
java·ide·intellij-idea