SpringBoot 整合docker,执行容器服务

news2024/9/21 0:28:20

我使用以下文章的镜像作为演示镜像,读者有自己的镜像可以使用自己的
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);
    }

3. 启动测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2145489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录Day 49|leetcode题目:42.接雨水、84.柱状图中最大矩形

提示:DDU,供自己复习使用。欢迎大家前来讨论~ 文章目录 题目题目一:42. 接雨水解题思路:暴力解法双指针优化思路:单调栈解法单调栈处理逻辑 题目二: 84.柱状图中最大的矩形解题思路:暴力解法双…

闯关leetcode——35. Search Insert Position

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/search-insert-position/description/ 内容 Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it wou…

【数据结构】排序算法---冒泡排序

文章目录 1. 定义2. 算法步骤3. 动图演示4. 性质5. 算法分析6. 代码实现C语言PythonJavaCGo 结语 1. 定义 冒泡排序(英语:Bubble sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的…

svn回退到以前历史版本修改并上传

svn回退到以前版本,并在以前版本上修改代码后,上传到svn库当中,如下步骤: 3、 以回退到版本号4为例:选中版本号4,右键->Revert to this version,在出现的对话框中 点击yes! 4、 5、

【ARM】Trustzone和安全架构

Trustzone的基本概念&背景和历史 什么是Trustzone? 什么是TEE? Trustzone是一个技术,是一个技术的设计,一个安全架构,既不是软件也不是硬件。 TEE (Trusted Execution Environment) 可信执行环境。就是依托Trust…

Java项目——苍穹外卖(二)

Redis 简介 Redis是一个基于内存的key-value结构数据库 基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛 基础操作 启动 在redis安装目录中打开cmd,输入如上图指令即可启动,按下crtl…

linux入门到实操-6 Linux服务管理、系统运行级别、配置服务开机启动和关闭防火墙、关机重启

教程来源:B站视频BV1WY4y1H7d3 3天搞定Linux,1天搞定Shell,清华学神带你通关_哔哩哔哩_bilibili 整理汇总的课程内容笔记和课程资料(包含课程同版本linux系统文件等内容),供大家学习交流下载:…

html详细知识

1-标题标签、水平线、字体标签 <!--1.标题标签1&#xff09;格式&#xff1a;<hn></hn> n的范围是1-6&#xff0c;依次递减2&#xff09;标题标签特点&#xff1a;a:单独占一行b:自动加粗2.水平线1&#xff09;格式&#xff1a;<hr/>2)属性&#xff1a;…

soc及其相关概念

用户无法直接操作内存&#xff0c;只能让内存映射到用户空间然后操作 1. 内存映射&#xff08;Memory-Mapped Files&#xff09;内存映射文件是一种方法&#xff0c;它允许一个或多个进程将一个文件或者一个匿名区域映射到它们各自的虚拟地址空间中。当文件被映射到内存后&…

rsync 远程同步及实时同步部署

一、rsync 远程同步 1.1 rsync简介 Rsync&#xff08;Remote Sync&#xff0c;远程同步&#xff09;是一个开源的快速备份工具&#xff0c;适用于异地备份、镜像服务器等应用。它的主要功能特性包括&#xff1a; 数据镜像同步&#xff1a;在不同主机之间同步整个目录树。增量…

基于STM32的无人小车自主避障系统设计

文章目录 前言资料获取设计介绍功能介绍设计程序具体实现截图参考文献设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设…

设计模式 享元模式(Flyweight Pattern)

享元模式 简绍 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;它的目的是通过共享技术来有效地支持大量细粒度的对象。享元模式可以极大地减少内存的使用&#xff0c;从而提高程序的性能。它特别适用于需要创建大量相似对象的场景&#…

鸿蒙 ArkUI组件三

ArkUI组件&#xff08;续&#xff09; QRCode组件 用于显示单个二维码的组件。 说明 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。二维码组件的像素点数量与内容有关&#xff0c;当组件尺寸过小时&#xff0c;可能…

二叉树的层序遍历(含十道leetcode相关题目)

文章目录 二叉树层序遍历模板102. 二叉树的层序遍历 二叉树层序遍历模板 我们之前讲过了关于二叉树的深度优先遍历的文章&#xff1a;前中后序遍历的递归法和迭代法。 接下来我们再来介绍二叉树的另一种遍历方式&#xff1a;层序遍历。 层序遍历一个二叉树。就是从左到右一层…

vue2使用npm引入依赖(例如axios),报错Module parse failed: Unexpected token解决方案

报错情况 Module parse failed: Unexpected token (5:2) You may need an appropriate loader to handle this file type. 原因 因为我们npm install时默认都是下载最新版本&#xff0c;然后个别依赖的版本太新&#xff0c;vue2他受不起这个福分。 解决方法 先去package.js…

SD-WAN如何保障企业数据安全?

SD-WAN&#xff08;软件定义广域网&#xff09;作为一种现代化网络解决方案&#xff0c;不仅能够优化和管理广域网的连接&#xff0c;还集成了一系列安全功能&#xff0c;帮助企业保护其数据安全。以下将详细介绍SD-WAN如何有效保障企业数据安全的机制。 在采用SD-WAN技术之前&…

[论文笔记]MRRNET

这是一篇河大的论文 感觉跟SANET很像 摘要 摘要&#xff1a;随着物联网&#xff08;IoT&#xff09;的大规模部署&#xff0c;道路场景中实时感知和环境理解的需求变得越来越迫切。 同时&#xff0c;语义分割作为像素级场景解析得到了广泛的研究。 然而&#xff0c;资源有限…

合宙Air201模组LuatOS:PWRKEY控制,一键解决解决关机难问题

不知不觉间&#xff0c;我们已经发布拉期课程&#xff1a;hello world初体验&#xff0c;点灯、远程控制、定位和扩展功能&#xff0c;你学的怎么样&#xff1f;很多伙伴表示已经有点上瘾啦&#xff01;合宙Air201&#xff0c;如同我们一路升级打怪的得力法器&#xff0c;让开发…

打通最后一公里:使用CDN加速GitHub Page的访问

无论是互联网从业者还是科研人员&#xff0c;使用Github Page能够很友好的建立个人网站。 目前比较主流的方案是使用GitHub Page托管文字网页&#xff0c;利用GitHub仓库托管图床&#xff0c;稳定可靠&#xff08;Gitee的page突然撤退&#xff0c;让人不敢再将图床放到上面&am…

大数据-138 - ClickHouse 集群 表引擎详解3 - MergeTree 存储结构 数据标记 分区 索引 标记 压缩协同

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…