From d86a77b5fe317cb1b7e664b3947b0fdc826c77df Mon Sep 17 00:00:00 2001 From: "Guillaume J. Charmes" Date: Wed, 1 May 2013 15:06:23 -0700 Subject: [PATCH] Make the FROM instruction pull the image if not existing Upstream-commit: 924b61328cd63fc8b1da77d9cb4f1e6b85eb1592 Component: engine --- components/engine/builder.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/components/engine/builder.go b/components/engine/builder.go index feaa81256c..8d94c40f95 100644 --- a/components/engine/builder.go +++ b/components/engine/builder.go @@ -198,8 +198,27 @@ func (builder *Builder) Build(dockerfile io.Reader, stdout io.Writer) (*Image, e fmt.Fprintf(stdout, "FROM %s\n", arguments) image, err = builder.runtime.repositories.LookupImage(arguments) if err != nil { - return nil, err + if builder.runtime.graph.IsNotExist(err) { + if builder.runtime.graph.LookupRemoteImage(arguments, builder.runtime.authConfig) { + if err := builder.runtime.graph.PullImage(stdout, arguments, builder.runtime.authConfig); err != nil { + return nil, err + } + } else { + // FIXME: Allow pull repo:tag + if err := builder.runtime.graph.PullRepository(stdout, arguments, "", builder.runtime.repositories, builder.runtime.authConfig); err != nil { + return nil, err + } + } + + image, err = builder.runtime.repositories.LookupImage(arguments) + if err != nil { + return nil, err + } + } else { + return nil, err + } } + break case "run": fmt.Fprintf(stdout, "RUN %s\n", arguments)