From 0d34f6cd2f82a625e2cc56e2114dfa306621d5f7 Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Wed, 5 Jul 2017 12:55:28 -0700 Subject: [PATCH 1/2] build: follow up fixes for build stream Signed-off-by: Tonis Tiigi --- cli/command/image/build.go | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/cli/command/image/build.go b/cli/command/image/build.go index 205b0adb83fd..0f76612fbfbe 100644 --- a/cli/command/image/build.go +++ b/cli/command/image/build.go @@ -166,15 +166,16 @@ func (out *lastProgressOutput) WriteProgress(prog progress.Progress) error { // nolint: gocyclo func runBuild(dockerCli command.Cli, options buildOptions) error { var ( - buildCtx io.ReadCloser - dockerfileCtx io.ReadCloser - err error - contextDir string - tempDir string - relDockerfile string - progBuff io.Writer - buildBuff io.Writer - remote string + buildCtx io.ReadCloser + dockerfileCtx io.ReadCloser + err error + contextDir string + tempDir string + relDockerfile string + progBuff io.Writer + buildBuff io.Writer + remote string + quietOutputBuffer *bytes.Buffer ) if options.dockerfileFromStdin() { @@ -189,7 +190,8 @@ func runBuild(dockerCli command.Cli, options buildOptions) error { buildBuff = dockerCli.Out() if options.quiet { progBuff = bytes.NewBuffer(nil) - buildBuff = bytes.NewBuffer(nil) + quietOutputBuffer = bytes.NewBuffer(nil) + buildBuff = quietOutputBuffer } if options.imageIDFile != "" { // Avoid leaving a stale file if we eventually fail @@ -284,7 +286,8 @@ func runBuild(dockerCli command.Cli, options buildOptions) error { buildCtx = replaceDockerfileTarWrapper(ctx, buildCtx, relDockerfile, translator, &resolvedTags) } else if dockerfileCtx != nil { // if there was not archive context still do the possible replacements in Dockerfile - newDockerfile, _, err := rewriteDockerfileFrom(ctx, dockerfileCtx, translator) + var newDockerfile []byte + newDockerfile, resolvedTags, err = rewriteDockerfileFrom(ctx, dockerfileCtx, translator) if err != nil { return err } @@ -415,7 +418,7 @@ func runBuild(dockerCli command.Cli, options buildOptions) error { jerr.Code = 1 } if options.quiet { - fmt.Fprintf(dockerCli.Err(), "%s%s", progBuff, buildBuff) + fmt.Fprintf(dockerCli.Err(), "%s%s", progBuff, quietOutputBuffer) } return cli.StatusError{Status: jerr.Message, StatusCode: jerr.Code} } @@ -435,7 +438,7 @@ func runBuild(dockerCli command.Cli, options buildOptions) error { // Everything worked so if -q was provided the output from the daemon // should be just the image ID and we'll print that to stdout. if options.quiet { - imageID = fmt.Sprintf("%s", buildBuff) + imageID = quietOutputBuffer.String() fmt.Fprintf(dockerCli.Out(), imageID) } From 0747b8c4c92186dc14495efebf4778ad42e827ea Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Wed, 1 Nov 2017 11:38:15 -0700 Subject: [PATCH 2/2] build: open dockerfile relative to context dir Signed-off-by: Tonis Tiigi --- cli/command/image/build.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cli/command/image/build.go b/cli/command/image/build.go index 0f76612fbfbe..4707167367c3 100644 --- a/cli/command/image/build.go +++ b/cli/command/image/build.go @@ -9,6 +9,7 @@ import ( "io" "io/ioutil" "os" + "path/filepath" "regexp" "runtime" @@ -264,7 +265,7 @@ func runBuild(dockerCli command.Cli, options buildOptions) error { // if streaming and dockerfile was not from stdin then read from file // to the same reader that is usually stdin if options.stream && dockerfileCtx == nil { - dockerfileCtx, err = os.Open(relDockerfile) + dockerfileCtx, err = os.Open(filepath.Join(contextDir, relDockerfile)) if err != nil { return errors.Wrapf(err, "failed to open %s", relDockerfile) }