From 4a317881177902097cb46d9da801db6c25cfe303 Mon Sep 17 00:00:00 2001 From: lecy <274525279@qq.com> Date: Wed, 13 Jul 2022 12:01:31 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E9=95=9C=E5=83=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ImageController.java | 9 ++++++ .../simpledocker/service/ImageService.java | 8 +++++ .../service/imple/ImageServiceImpl.java | 29 +++++++++++++++++++ 3 files changed, 46 insertions(+) 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 f5c0614..6ea452a 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 @@ -22,6 +22,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * TODO: please input file info * @@ -99,4 +102,10 @@ public class ImageController { imageService.tag(req.getImageId(),req.getNewTag()); return ResponseModel.ok(true); } + + @GetMapping("/save/{nameTag}") + public ResponseModel save(@PathVariable String nameTag, HttpServletRequest request,HttpServletResponse response) { + imageService.save(nameTag,request,response); + return ResponseModel.ok("OK"); + } } 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 8958827..333bb89 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 @@ -5,6 +5,9 @@ import java.util.List; import com.github.dockerjava.api.command.InspectImageResponse; import com.github.dockerjava.api.model.Image; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * 镜像相关服务 * @@ -89,4 +92,9 @@ public interface ImageService { * 清理镜像 */ void pruneImage(); + + /** + * 镜像导出 + */ + void save(String nameTag, 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 5fe35c7..7f5ba31 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 @@ -1,6 +1,10 @@ package com.taoes.simpledocker.service.imple; +import com.github.dockerjava.api.command.SaveImageCmd; import com.taoes.simpledocker.model.exception.NotFoundClientException; + +import java.io.*; +import java.net.URLEncoder; import java.util.List; import com.github.dockerjava.api.DockerClient; @@ -14,6 +18,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * 镜像相关服务实现 * @@ -97,4 +104,26 @@ public class ImageServiceImpl implements ImageService { final DockerClient dockerClient = factory.get(); dockerClient.pruneCmd(PruneType.IMAGES).exec(); } + + @Override + public void save(String nameTag, HttpServletRequest request,HttpServletResponse response) { + final DockerClient dockerClient = factory.get(); + String[] nameTagArr = nameTag.split("\\:"); + //docker save + InputStream input = dockerClient.saveImageCmd(nameTagArr[0]).withTag(nameTagArr[1]).exec(); + try { + response.setContentType("application/ms-excel;charset=UTF-8"); + response.setHeader("Content-Disposition","attachment;filename="+nameTag+".zip"); + // 循环取出流中的数据 + byte[] b = new byte[1024]; + int len; + while ((len = input.read(b)) > 0) { + response.getOutputStream().write(b, 0, len); + } + input.close(); + response.getOutputStream().close(); + } catch (IOException e) { + e.printStackTrace(); + } + } } -- Gitee From 271aabecd776dd90a4ff77663a1236d89eb55d3a Mon Sep 17 00:00:00 2001 From: lecy <274525279@qq.com> Date: Wed, 13 Jul 2022 12:03:23 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E9=95=9C=E5=83=8F=E6=8E=A5=E5=8F=A3=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/taoes/simpledocker/controller/ImageController.java | 3 +++ 1 file changed, 3 insertions(+) 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 6ea452a..455b227 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 @@ -103,6 +103,9 @@ public class ImageController { return ResponseModel.ok(true); } + /** + * 保存镜像 + */ @GetMapping("/save/{nameTag}") public ResponseModel save(@PathVariable String nameTag, HttpServletRequest request,HttpServletResponse response) { imageService.save(nameTag,request,response); -- Gitee