From 73d0790e30b6ae3efe4fcc3bd10160531ef55c6d Mon Sep 17 00:00:00 2001 From: Josh Curl Date: Thu, 1 Sep 2016 09:56:03 -0700 Subject: [PATCH] Reduce memory usage copying Docker binaries --- cmd/userdocker/main.go | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/cmd/userdocker/main.go b/cmd/userdocker/main.go index 8ba2401c..6b54ad44 100644 --- a/cmd/userdocker/main.go +++ b/cmd/userdocker/main.go @@ -96,11 +96,27 @@ func copyBinaries(source, dest string) error { sourceFile := path.Join(source, file.Name()) destFile := path.Join(dest, file.Name()) - data, err := ioutil.ReadFile(sourceFile) + in, err := os.Open(sourceFile) if err != nil { return err } - if err := ioutil.WriteFile(destFile, data, 0751); err != nil { + out, err := os.Create(destFile) + if err != nil { + return err + } + if _, err = io.Copy(out, in); err != nil { + return err + } + if err = out.Sync(); err != nil { + return err + } + if err = in.Close(); err != nil { + return err + } + if err = out.Close(); err != nil { + return err + } + if err := os.Chmod(destFile, 0751); err != nil { return err } }