Skip to content

Commit

Permalink
Disable compression for build. More space usage but much faster upload
Browse files Browse the repository at this point in the history
Docker-DCO-1.0-Signed-off-by: Guillaume J. Charmes <[email protected]> (github: creack)
  • Loading branch information
creack committed Jan 8, 2014
1 parent b3addb5 commit 1137ecf
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 12 deletions.
3 changes: 2 additions & 1 deletion buildfile.go
Original file line number Diff line number Diff line change
Expand Up @@ -594,11 +594,12 @@ func (b *buildFile) Build(context io.Reader) (string, error) {
if err != nil {
return "", err
}
b.context = &utils.TarSum{Reader: context}
b.context = &utils.TarSum{Reader: context, DisableCompression: true}
if err := archive.Untar(b.context, tmpdirPath, nil); err != nil {
return "", err
}
defer os.RemoveAll(tmpdirPath)

b.contextPath = tmpdirPath
filename := path.Join(tmpdirPath, "Dockerfile")
if _, err := os.Stat(filename); os.IsNotExist(err) {
Expand Down
44 changes: 33 additions & 11 deletions utils/tarsum.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,34 @@ import (

type TarSum struct {
io.Reader
tarR *tar.Reader
tarW *tar.Writer
gz *gzip.Writer
bufTar *bytes.Buffer
bufGz *bytes.Buffer
h hash.Hash
sums map[string]string
currentFile string
finished bool
first bool
tarR *tar.Reader
tarW *tar.Writer
gz writeCloseFlusher
bufTar *bytes.Buffer
bufGz *bytes.Buffer
h hash.Hash
sums map[string]string
currentFile string
finished bool
first bool
DisableCompression bool
}

type writeCloseFlusher interface {
io.WriteCloser
Flush() error
}

type nopCloseFlusher struct {
io.Writer
}

func (n *nopCloseFlusher) Close() error {
return nil
}

func (n *nopCloseFlusher) Flush() error {
return nil
}

func (ts *TarSum) encodeHeader(h *tar.Header) error {
Expand Down Expand Up @@ -57,7 +75,11 @@ func (ts *TarSum) Read(buf []byte) (int, error) {
ts.bufGz = bytes.NewBuffer([]byte{})
ts.tarR = tar.NewReader(ts.Reader)
ts.tarW = tar.NewWriter(ts.bufTar)
ts.gz = gzip.NewWriter(ts.bufGz)
if !ts.DisableCompression {
ts.gz = gzip.NewWriter(ts.bufGz)
} else {
ts.gz = &nopCloseFlusher{Writer: ts.bufGz}
}
ts.h = sha256.New()
ts.h.Reset()
ts.first = true
Expand Down

0 comments on commit 1137ecf

Please sign in to comment.