123456789101112131415161718192021222324252627282930313233 |
- package daemon
- import (
- "io"
- "github.com/Sirupsen/logrus"
- "github.com/docker/docker/api/types/backend"
- "github.com/docker/docker/builder"
- "github.com/docker/docker/builder/dockerfile"
- "github.com/docker/engine-api/types"
- "golang.org/x/net/context"
- )
- // BuildFromContext builds a new image from a given context.
- func (daemon *Daemon) BuildFromContext(ctx context.Context, src io.ReadCloser, remote string, buildOptions *types.ImageBuildOptions, pg backend.ProgressWriter) (string, error) {
- buildContext, dockerfileName, err := builder.DetectContextFromRemoteURL(src, remote, pg.ProgressReaderFunc)
- if err != nil {
- return "", err
- }
- defer func() {
- if err := buildContext.Close(); err != nil {
- logrus.Debugf("[BUILDER] failed to remove temporary context: %v", err)
- }
- }()
- if len(dockerfileName) > 0 {
- buildOptions.Dockerfile = dockerfileName
- }
- m := dockerfile.NewBuildManager(daemon)
- return m.Build(ctx, buildOptions,
- builder.DockerIgnoreContext{ModifiableContext: buildContext},
- pg.StdoutFormatter, pg.StderrFormatter, pg.Output)
- }
|