From 0f0fc435c92a4f056afccb60325c6b5b24b53987 Mon Sep 17 00:00:00 2001 From: lecy <274525279@qq.com> Date: Wed, 13 Jul 2022 16:11:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=89=B9=E9=87=8F=E9=95=9C?= =?UTF-8?q?=E5=83=8F=E4=BF=9D=E5=AD=98=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ImageController.java | 7 +++++ .../simpledocker/service/ImageService.java | 7 ++++- .../service/imple/ImageServiceImpl.java | 26 +++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/backend-src/src/main/java/com/taoes/simpledocker/controller/ImageController.java b/backend-src/src/main/java/com/taoes/simpledocker/controller/ImageController.java index 956d773..444bd89 100644 --- a/backend-src/src/main/java/com/taoes/simpledocker/controller/ImageController.java +++ b/backend-src/src/main/java/com/taoes/simpledocker/controller/ImageController.java @@ -110,4 +110,11 @@ public class ImageController { public void save(@PathVariable String nameTag, HttpServletRequest request,HttpServletResponse response) { imageService.save(nameTag,request,response); } + /** + * 批量保存镜像 + */ + @PostMapping("/saveBatch") + public void saveBatch(@RequestBody List nameTagList, HttpServletRequest request,HttpServletResponse response) { + imageService.saveBatch(nameTagList,request,response); + } } diff --git a/backend-src/src/main/java/com/taoes/simpledocker/service/ImageService.java b/backend-src/src/main/java/com/taoes/simpledocker/service/ImageService.java index 333bb89..6b57eea 100644 --- a/backend-src/src/main/java/com/taoes/simpledocker/service/ImageService.java +++ b/backend-src/src/main/java/com/taoes/simpledocker/service/ImageService.java @@ -94,7 +94,12 @@ public interface ImageService { void pruneImage(); /** - * 镜像导出 + * 镜像保存 */ void save(String nameTag, HttpServletRequest request,HttpServletResponse response); + + /** + * 批量镜像保存 + */ + void saveBatch(List nameTagList, HttpServletRequest request, HttpServletResponse response); } diff --git a/backend-src/src/main/java/com/taoes/simpledocker/service/imple/ImageServiceImpl.java b/backend-src/src/main/java/com/taoes/simpledocker/service/imple/ImageServiceImpl.java index 8c31f81..44e2caa 100644 --- a/backend-src/src/main/java/com/taoes/simpledocker/service/imple/ImageServiceImpl.java +++ b/backend-src/src/main/java/com/taoes/simpledocker/service/imple/ImageServiceImpl.java @@ -2,6 +2,7 @@ package com.taoes.simpledocker.service.imple; import cn.hutool.core.date.DateUtil; import com.github.dockerjava.api.command.SaveImageCmd; +import com.github.dockerjava.api.command.SaveImagesCmd; import com.taoes.simpledocker.model.exception.NotFoundClientException; import java.io.*; @@ -128,4 +129,29 @@ public class ImageServiceImpl implements ImageService { e.printStackTrace(); } } + + @Override + public void saveBatch(List nameTagList, HttpServletRequest request, HttpServletResponse response) { + final DockerClient dockerClient = factory.get(); + //docker save + SaveImagesCmd saveImages = dockerClient.saveImagesCmd(); + for (String nameTag : nameTagList) { + String[] nameTagArr = nameTag.split("\\:"); + saveImages.withImage(nameTagArr[0],nameTagArr[1]); + } + try (InputStream input = saveImages.exec(); + ServletOutputStream output = response.getOutputStream()) { + String curentTime = DateUtil.format(DateUtil.date(), "yyyyMMdd_HHmmss"); + response.setContentType("application/x-zip-compressed;charset=UTF-8"); + response.setHeader("Content-Disposition","attachment;filename=" + curentTime + ".zip"); + // 循环取出流中的数据 + byte[] b = new byte[1024]; + int len; + while ((len = input.read(b)) > 0) { + output.write(b, 0, len); + } + } catch (IOException e) { + e.printStackTrace(); + } + } } -- Gitee