builder: remove dependency on image
Signed-off-by: Tibor Vass <tibor@docker.com>
This commit is contained in:
parent
93c0de2af4
commit
9be1ec60d4
6 changed files with 44 additions and 23 deletions
|
@ -11,7 +11,6 @@ import (
|
|||
|
||||
"github.com/docker/docker/api/types"
|
||||
"github.com/docker/docker/daemon"
|
||||
"github.com/docker/docker/image"
|
||||
"github.com/docker/docker/runconfig"
|
||||
)
|
||||
|
||||
|
@ -112,9 +111,9 @@ type Backend interface {
|
|||
// TODO: use digest reference instead of name
|
||||
|
||||
// GetImage looks up a Docker image referenced by `name`.
|
||||
GetImage(name string) (*image.Image, error)
|
||||
GetImage(name string) (Image, error)
|
||||
// Pull tells Docker to pull image referenced by `name`.
|
||||
Pull(name string) (*image.Image, error)
|
||||
Pull(name string) (Image, error)
|
||||
// ContainerWsAttachWithLogs attaches to container.
|
||||
ContainerWsAttachWithLogs(name string, cfg *daemon.ContainerWsAttachWithLogsConfig) error
|
||||
// ContainerCreate creates a new Docker container and returns potential warnings
|
||||
|
|
|
@ -18,8 +18,8 @@ import (
|
|||
"strings"
|
||||
|
||||
"github.com/Sirupsen/logrus"
|
||||
"github.com/docker/docker/builder"
|
||||
derr "github.com/docker/docker/errors"
|
||||
"github.com/docker/docker/image"
|
||||
flag "github.com/docker/docker/pkg/mflag"
|
||||
"github.com/docker/docker/pkg/nat"
|
||||
"github.com/docker/docker/pkg/signal"
|
||||
|
@ -210,7 +210,7 @@ func from(b *Builder, args []string, attributes map[string]bool, original string
|
|||
}
|
||||
|
||||
var (
|
||||
image *image.Image
|
||||
image builder.Image
|
||||
err error
|
||||
)
|
||||
// TODO: don't use `name`, instead resolve it to a digest
|
||||
|
|
|
@ -24,7 +24,6 @@ import (
|
|||
"github.com/docker/docker/builder"
|
||||
"github.com/docker/docker/builder/dockerfile/parser"
|
||||
"github.com/docker/docker/daemon"
|
||||
"github.com/docker/docker/image"
|
||||
"github.com/docker/docker/pkg/archive"
|
||||
"github.com/docker/docker/pkg/httputils"
|
||||
"github.com/docker/docker/pkg/ioutils"
|
||||
|
@ -403,11 +402,11 @@ func containsWildcards(name string) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func (b *Builder) processImageFrom(img *image.Image) error {
|
||||
b.image = img.ID().String()
|
||||
func (b *Builder) processImageFrom(img builder.Image) error {
|
||||
b.image = img.ID()
|
||||
|
||||
if img.Config != nil {
|
||||
b.runConfig = img.Config
|
||||
b.runConfig = img.Config()
|
||||
}
|
||||
|
||||
// The default path will be blank on Windows (set by HCS)
|
||||
|
|
9
builder/image.go
Normal file
9
builder/image.go
Normal file
|
@ -0,0 +1,9 @@
|
|||
package builder
|
||||
|
||||
import "github.com/docker/docker/runconfig"
|
||||
|
||||
// Image represents a Docker image used by the builder.
|
||||
type Image interface {
|
||||
ID() string
|
||||
Config() *runconfig.Config
|
||||
}
|
|
@ -36,7 +36,7 @@ type Docker struct {
|
|||
var _ builder.Backend = Docker{}
|
||||
|
||||
// Pull tells Docker to pull image referenced by `name`.
|
||||
func (d Docker) Pull(name string) (*image.Image, error) {
|
||||
func (d Docker) Pull(name string) (builder.Image, error) {
|
||||
ref, err := reference.ParseNamed(name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -69,8 +69,16 @@ func (d Docker) Pull(name string) (*image.Image, error) {
|
|||
if err := d.Daemon.PullImage(ref, nil, pullRegistryAuth, ioutils.NopWriteCloser(d.OutOld)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return d.GetImage(name)
|
||||
}
|
||||
|
||||
return d.Daemon.GetImage(name)
|
||||
// GetImage looks up a Docker image referenced by `name`.
|
||||
func (d Docker) GetImage(name string) (builder.Image, error) {
|
||||
img, err := d.Daemon.GetImage(name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return imgWrap{img}, nil
|
||||
}
|
||||
|
||||
// ContainerUpdateCmd updates Path and Args for the container with ID cID.
|
||||
|
@ -84,18 +92,6 @@ func (d Docker) ContainerUpdateCmd(cID string, cmd []string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// Retain retains an image avoiding it to be removed or overwritten until a corresponding Release() call.
|
||||
func (d Docker) Retain(sessionID, imgID string) {
|
||||
// FIXME: This will be solved with tags in client-side builder
|
||||
//d.Daemon.Graph().Retain(sessionID, imgID)
|
||||
}
|
||||
|
||||
// Release releases a list of images that were retained for the time of a build.
|
||||
func (d Docker) Release(sessionID string, activeImages []string) {
|
||||
// FIXME: This will be solved with tags in client-side builder
|
||||
//d.Daemon.Graph().Release(sessionID, activeImages...)
|
||||
}
|
||||
|
||||
// BuilderCopy copies/extracts a source FileInfo to a destination path inside a container
|
||||
// specified by a container object.
|
||||
// TODO: make sure callers don't unnecessarily convert destPath with filepath.FromSlash (Copy does it already).
|
||||
|
|
18
daemon/daemonbuilder/image.go
Normal file
18
daemon/daemonbuilder/image.go
Normal file
|
@ -0,0 +1,18 @@
|
|||
package daemonbuilder
|
||||
|
||||
import (
|
||||
"github.com/docker/docker/image"
|
||||
"github.com/docker/docker/runconfig"
|
||||
)
|
||||
|
||||
type imgWrap struct {
|
||||
inner *image.Image
|
||||
}
|
||||
|
||||
func (img imgWrap) ID() string {
|
||||
return string(img.inner.ID())
|
||||
}
|
||||
|
||||
func (img imgWrap) Config() *runconfig.Config {
|
||||
return img.inner.Config
|
||||
}
|
Loading…
Reference in a new issue