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 956d7737c0241a4cd4730815a56c0cb93ec1345f..444bd892ae093b807948b746ea3add2b143effb0 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 333bb89bffe1e587de43e75c1acbc6fad3396985..6b57eea7d1e2b575d75c032115a6c88e9b5ca1f2 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 8c31f81ef2cd86193a65b41c41ceb3283bc48e00..44e2caa15d59efbf42eef24c87461a4a537fa15b 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(); + } + } }