diff --git a/cli/command/image/build.go b/cli/command/image/build.go index fa7abe4023..ccfebb9834 100644 --- a/cli/command/image/build.go +++ b/cli/command/image/build.go @@ -56,6 +56,7 @@ type buildOptions struct { forceRm bool pull bool cacheFrom []string + compress bool } // NewBuildCommand creates a new `docker build` command @@ -101,6 +102,7 @@ func NewBuildCommand(dockerCli *command.DockerCli) *cobra.Command { flags.BoolVarP(&options.quiet, "quiet", "q", false, "Suppress the build output and print image ID on success") flags.BoolVar(&options.pull, "pull", false, "Always attempt to pull a newer version of the image") flags.StringSliceVar(&options.cacheFrom, "cache-from", []string{}, "Images to consider as cache sources") + flags.BoolVar(&options.compress, "compress", false, "Compress the build context using gzip") command.AddTrustedFlags(flags, true) @@ -209,8 +211,12 @@ func runBuild(dockerCli *command.DockerCli, options buildOptions) error { includes = append(includes, ".dockerignore", relDockerfile) } + compression := archive.Uncompressed + if options.compress { + compression = archive.Gzip + } buildCtx, err = archive.TarWithOptions(contextDir, &archive.TarOptions{ - Compression: archive.Uncompressed, + Compression: compression, ExcludePatterns: excludes, IncludeFiles: includes, }) diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index 827f02f999..11d7b9faf4 100644 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -758,6 +758,7 @@ _docker_build() { " local boolean_options=" + --compress --disable-content-trust=false --force-rm --help @@ -1301,7 +1302,7 @@ _docker_info() { return ;; esac - + case "$cur" in -*) COMPREPLY=( $( compgen -W "--format -f --help" -- "$cur" ) ) diff --git a/contrib/completion/zsh/_docker b/contrib/completion/zsh/_docker index 535f1f1ec2..94243a1181 100644 --- a/contrib/completion/zsh/_docker +++ b/contrib/completion/zsh/_docker @@ -1509,6 +1509,7 @@ __docker_subcommand() { $opts_build_create_run \ $opts_build_create_run_update \ "($help)*--build-arg[Build-time variables]:=: " \ + "($help)--compress[Compress the build context using gzip]" \ "($help -f --file)"{-f=,--file=}"[Name of the Dockerfile]:Dockerfile:_files" \ "($help)--force-rm[Always remove intermediate containers]" \ "($help)*--label=[Set metadata for an image]:label=value: " \ diff --git a/docs/reference/commandline/build.md b/docs/reference/commandline/build.md index 68e39dfd77..95c278f761 100644 --- a/docs/reference/commandline/build.md +++ b/docs/reference/commandline/build.md @@ -19,6 +19,7 @@ Options: --build-arg value Set build-time variables (default []) --cache-from value Images to consider as cache sources (default []) --cgroup-parent string Optional parent cgroup for the container + --compress Compress the build context using gzip --cpu-period int Limit the CPU CFS (Completely Fair Scheduler) period --cpu-quota int Limit the CPU CFS (Completely Fair Scheduler) quota -c, --cpu-shares int CPU shares (relative weight) diff --git a/man/docker-build.1.md b/man/docker-build.1.md index b654e2d922..b07061ea91 100644 --- a/man/docker-build.1.md +++ b/man/docker-build.1.md @@ -16,6 +16,7 @@ docker-build - Build a new image from the source code at PATH [**--label**[=*[]*]] [**--no-cache**] [**--pull**] +[**--compress**] [**-q**|**--quiet**] [**--rm**[=*true*]] [**-t**|**--tag**[=*[]*]] @@ -84,6 +85,9 @@ set as the **URL**, the repository is cloned locally and then sent as the contex **--pull**=*true*|*false* Always attempt to pull a newer version of the image. The default is *false*. +**--compress**=*true*|*false* + Compress the build context using gzip. The default is *false*. + **-q**, **--quiet**=*true*|*false* Suppress the build output and print image ID on success. The default is *false*.