SpringBoot 整合docker,执行容器服务

news/2024/9/19 9:23:33 标签: springboot, docker, java

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

springboot_docker_4">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();  // 返回执行日志
    }

dockerdocker_37">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. 启动测试


http://www.niftyadmin.cn/n/5665336.html

相关文章

简评2024.9.16北京大运河音乐节

第一次音乐节,从个人观感上,点评一下,香蕉俱乐部,直接给我听睡着了,对你没听错给我听睡着了,除了拍了个开头,就直接睡过去了,温和治疗,让人眼前一亮,歌虽然没…

Linux系统(Ubuntu)(下载篇)

一、下载VMware和Ubuntu镜像 VMware可以去官网下载,也可以看教程,教程很多。 Ubuntu可以去清华大学开源软件镜像站下载。 1.右上角点MIRRORS,必须点一下,要不看不到 2.找到ubuntu-releases点击 3.找个版本下载 二、vmware配…

网络安全。

文章目录 目录 文章目录 一. 网络安全概述 二. 密码学原理 三. 报文完整性和数字签名 密码散列函数 报文鉴别码 数字签名 公钥认证 四. HTTPS通信 总结 一. 网络安全概述 网络安全是保护计算机网络及其数据免受各种威胁和攻击的实践和技术。随着互联网的普及和数字化…

[Golang] Context

[Golang] Context 文章目录 [Golang] Context什么是context创建context创建根context创建context context的作用并发控制context.WithCancelcontext.WithDeadlinecontext.WithTimeoutcontext.WithValue 什么是context Golang在1.7版本中引入了一个标准库的接口context&#xf…

Java服务端数据库连接:连接池的故障恢复策略

Java服务端数据库连接:连接池的故障恢复策略 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在Java服务端应用中,数据库连接池是核心组件之一,它管理着数据库…

【Python】探索Magenta:音乐与艺术的机器智能创作

下班了,今天的苦就先吃到这里。 在人工智能的浪潮中,机器学习技术正逐渐渗透到艺术创作的各个领域。今天,我们来探索一个特别的项目——Magenta,它是由Google Brain团队发起的,旨在使用机器智能生成音乐和艺术。这个项…

MySQL|MySQL 中 `DATE_FORMAT()` 函数的使用

文章目录 概述方法签名格式化字符基本用法实际应用案例示例1:显示日期和星期几示例2:仅显示日期示例3:按周统计订单数量 注意事项结论 概述 DATE_FORMAT() 是 MySQL 中的一个内置函数,用于格式化日期和时间数据。它可以根据指定的…

【无人机设计与控制】基于粒子群算法的三维无人机航迹规划

摘要 本文研究了基于粒子群算法(PSO)的三维无人机航迹规划问题。通过粒子群优化算法,无人机能够在复杂三维环境中进行路径规划,以避开障碍并实现最优路径飞行。该方法有效结合了无人机的飞行动力学特性与环境约束,能够…