Documentation ¶
Overview ¶
Package dockerfile is the evaluation step in the Dockerfile parse/evaluate pipeline.
It incorporates a dispatch table based on the parser.Node values (see the parser package for more information) that are yielded from the parser itself. Calling newBuilder with the BuildOpts struct can be used to customize the experience for execution purposes only. Parsing is controlled in the parser package, and this division of responsibility should be respected.
Please see the jump table targets for the actual invocations, most of which will call out to the functions in internals.go to deal with their tasks.
ONBUILD is a special case, which is covered in the onbuild() func in dispatchers.go.
The evaluator uses the concept of "steps", which are usually each processable line in the Dockerfile. Each step is numbered and certain actions are taken before and after each step, such as creating an image ID and removing temporary containers and images. Note that ONBUILD creates a kinda-sorta "sub run" which includes its own set of steps (usually only one of them).
Index ¶
- func BuildFromConfig(config *container.Config, changes []string, os string) (*container.Config, error)
- type Archiver
- type BuildArgs
- func (b *BuildArgs) AddArg(key string, value *string)
- func (b *BuildArgs) AddMetaArg(key string, value *string)
- func (b *BuildArgs) Clone() *BuildArgs
- func (b *BuildArgs) FilterAllowed(filter []string) []string
- func (b *BuildArgs) GetAllAllowed() map[string]string
- func (b *BuildArgs) GetAllMeta() map[string]string
- func (b *BuildArgs) IsReferencedOrNotBuiltin(key string) bool
- func (b *BuildArgs) MergeReferencedArgs(other *BuildArgs)
- func (b *BuildArgs) ResetAllowed()
- func (b *BuildArgs) WarnOnUnusedBuildArgs(out io.Writer)
- type BuildManager
- type Builder
- type ClientSessionSourceIdentifier
- type ClientSessionTransport
- type ImageProber
- type SessionGetter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BuildFromConfig ¶
func BuildFromConfig(config *container.Config, changes []string, os string) (*container.Config, error)
BuildFromConfig builds directly from `changes`, treating it as if it were the contents of a Dockerfile It will: - Call parse.Parse() to get an AST root for the concatenated Dockerfile entries. - Do build by calling builder.dispatch() to call all entries' handling routines
BuildFromConfig is used by the /commit endpoint, with the changes coming from the query parameter of the same name.
TODO: Remove?
Types ¶
type Archiver ¶
type Archiver interface { TarUntar(src, dst string) error UntarPath(src, dst string) error CopyWithTar(src, dst string) error CopyFileWithTar(src, dst string) error IdentityMapping() *idtools.IdentityMapping }
Archiver defines an interface for copying files from one destination to another using Tar/Untar.
type BuildArgs ¶
type BuildArgs struct {
// contains filtered or unexported fields
}
BuildArgs manages arguments used by the builder
func NewBuildArgs ¶
NewBuildArgs creates a new BuildArgs type
func (*BuildArgs) AddMetaArg ¶
AddMetaArg adds a new meta arg that can be used by FROM directives
func (*BuildArgs) FilterAllowed ¶
FilterAllowed returns all allowed args without the filtered args
func (*BuildArgs) GetAllAllowed ¶
GetAllAllowed returns a mapping with all the allowed args
func (*BuildArgs) GetAllMeta ¶
GetAllMeta returns a mapping with all the meta meta args
func (*BuildArgs) IsReferencedOrNotBuiltin ¶
IsReferencedOrNotBuiltin checks if the key is a built-in arg, or if it has been referenced by the Dockerfile. Returns true if the arg is not a builtin or if the builtin has been referenced in the Dockerfile.
func (*BuildArgs) MergeReferencedArgs ¶
MergeReferencedArgs merges referenced args from another BuildArgs object into the current one
func (*BuildArgs) ResetAllowed ¶
func (b *BuildArgs) ResetAllowed()
ResetAllowed clears the list of args that are allowed to be used by a directive
func (*BuildArgs) WarnOnUnusedBuildArgs ¶
WarnOnUnusedBuildArgs checks if there are any leftover build-args that were passed but not consumed during build. Print a warning, if there are any.
type BuildManager ¶
type BuildManager struct {
// contains filtered or unexported fields
}
BuildManager is shared across all Builder objects
func NewBuildManager ¶
func NewBuildManager(b builder.Backend, sg SessionGetter, fsCache *fscache.FSCache, identityMapping *idtools.IdentityMapping) (*BuildManager, error)
NewBuildManager creates a BuildManager
func (*BuildManager) Build ¶
func (bm *BuildManager) Build(ctx context.Context, config backend.BuildConfig) (*builder.Result, error)
Build starts a new build from a BuildConfig
type Builder ¶
type Builder struct { Stdout io.Writer Stderr io.Writer Aux *streamformatter.AuxFormatter Output io.Writer // contains filtered or unexported fields }
Builder is a Dockerfile builder It implements the builder.Backend interface.
type ClientSessionSourceIdentifier ¶
type ClientSessionSourceIdentifier struct {
// contains filtered or unexported fields
}
ClientSessionSourceIdentifier is an identifier that can be used for requesting files from remote client
func NewClientSessionSourceIdentifier ¶
func NewClientSessionSourceIdentifier(ctx context.Context, sg SessionGetter, uuid string) (*ClientSessionSourceIdentifier, error)
NewClientSessionSourceIdentifier returns new ClientSessionSourceIdentifier instance
func (*ClientSessionSourceIdentifier) Key ¶
func (csi *ClientSessionSourceIdentifier) Key() string
Key returns unique key for remote identifier. Requests with same key return same data.
func (*ClientSessionSourceIdentifier) SharedKey ¶
func (csi *ClientSessionSourceIdentifier) SharedKey() string
SharedKey returns shared key for remote identifier. Shared key is used for finding the base for a repeated transfer.
func (*ClientSessionSourceIdentifier) Transport ¶
func (csi *ClientSessionSourceIdentifier) Transport() string
Transport returns transport identifier for remote identifier
type ClientSessionTransport ¶
type ClientSessionTransport struct{}
ClientSessionTransport is a transport for copying files from docker client to the daemon.
func NewClientSessionTransport ¶
func NewClientSessionTransport() *ClientSessionTransport
NewClientSessionTransport returns new ClientSessionTransport instance
func (*ClientSessionTransport) Copy ¶
func (cst *ClientSessionTransport) Copy(ctx context.Context, id fscache.RemoteIdentifier, dest string, cu filesync.CacheUpdater) error
Copy data from a remote to a destination directory.