Make the FROM instruction pull the image if not existing

This commit is contained in:
Guillaume J. Charmes 2013-05-01 15:06:23 -07:00
parent 4ebec08add
commit 924b61328c
1 changed files with 20 additions and 1 deletions

View File

@ -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)