Add `docker build --iidfile=FILE`

This is synonymous with `docker run --cidfile=FILE` and writes the digest of
the newly built image to the named file. This is intended to be used by build
systems which want to avoid tagging (perhaps because they are in CI or
otherwise want to avoid fixed names which can clash) by enabling e.g. Makefile
constructs like:

    image.id: Dockerfile
    	docker build --iidfile=image.id .

    do-some-more-stuff: image.id
    	do-stuff-with <image.id

Currently the only way to achieve this is to use `docker build -q` and capture
the stdout, but at the expense of losing the build output.

In non-silent mode (without `-q`) with API >= v1.29 the caller will now see a
`JSONMessage` with the `Aux` field containing a `types.BuildResult` in the
output stream for each image/layer produced during the build, with the final
one being the end product.  Having all of the intermediate images might be
interesting in some cases.

In silent mode (with `-q`) there is no change, on success the only output will
be the resulting image digest as it was previosuly.

There was no wrapper to just output an Aux section without enclosing it in a
Progress, so add one here.

Added some tests to integration cli tests.

Signed-off-by: Ian Campbell <ian.campbell@docker.com>
This commit is contained in:
Ian Campbell 2017-04-06 13:33:56 +01:00 committed by Tibor Vass
parent 20bcf49fb6
commit 0808cf04cb
2 changed files with 5 additions and 0 deletions

View File

@ -35,6 +35,7 @@ Options:
-f, --file string Name of the Dockerfile (Default is 'PATH/Dockerfile') -f, --file string Name of the Dockerfile (Default is 'PATH/Dockerfile')
--force-rm Always remove intermediate containers --force-rm Always remove intermediate containers
--help Print usage --help Print usage
--iidfile string Write the image ID to the file
--isolation string Container isolation technology --isolation string Container isolation technology
--label value Set metadata for an image (default []) --label value Set metadata for an image (default [])
-m, --memory string Memory limit -m, --memory string Memory limit

View File

@ -11,6 +11,7 @@ docker-build - Build an image from a Dockerfile
[**--cpu-shares**[=*0*]] [**--cpu-shares**[=*0*]]
[**--cgroup-parent**[=*CGROUP-PARENT*]] [**--cgroup-parent**[=*CGROUP-PARENT*]]
[**--help**] [**--help**]
[**--iidfile**[=*CIDFILE*]]
[**-f**|**--file**[=*PATH/Dockerfile*]] [**-f**|**--file**[=*PATH/Dockerfile*]]
[**-squash**] *Experimental* [**-squash**] *Experimental*
[**--force-rm**] [**--force-rm**]
@ -104,6 +105,9 @@ option can be set multiple times.
**--no-cache**=*true*|*false* **--no-cache**=*true*|*false*
Do not use cache when building the image. The default is *false*. Do not use cache when building the image. The default is *false*.
**--iidfile**=""
Write the image ID to the file
**--help** **--help**
Print usage statement Print usage statement