From 771f1409db234c4ff5f2992fa2372e580d2e3c0c Mon Sep 17 00:00:00 2001 From: mii443 Date: Wed, 9 Oct 2024 06:18:19 +0000 Subject: [PATCH] add download from container func --- src/docker.rs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/docker.rs b/src/docker.rs index b101853..2cf3c74 100644 --- a/src/docker.rs +++ b/src/docker.rs @@ -1,12 +1,14 @@ +use core::slice::SlicePattern; use std::{ + io::Read, sync::mpsc::{self, Receiver, Sender}, time::Duration, }; use bollard::{ container::{ - CreateContainerOptions, ListContainersOptions, LogOutput, RemoveContainerOptions, - UploadToContainerOptions, + CreateContainerOptions, DownloadFromContainerOptions, ListContainersOptions, LogOutput, + RemoveContainerOptions, UploadToContainerOptions, }, exec::{CreateExecOptions, StartExecResults}, service::ContainerSummary, @@ -172,6 +174,18 @@ impl Container { return None; } + pub async fn download_file(&self, path: &str) -> Vec { + let docker = Docker::connect_with_local_defaults().unwrap(); + let options = Some(DownloadFromContainerOptions { path }); + let mut download = docker.download_from_container(&self.id, options); + let mut result: Vec = vec![]; + while let Some(Ok(d)) = download.next().await { + result.append(&mut d.into()); + } + + result + } + pub async fn upload_file(&self, content: &str, file_name: String) { let docker = Docker::connect_with_local_defaults().unwrap(); let path = self.language.clone().unwrap().get_path(file_name.clone());