Change verbose builder out back to attach
| ... | ... |
@@ -545,21 +545,18 @@ func (b *Builder) create() (*daemon.Container, error) {
|
| 545 | 545 |
} |
| 546 | 546 |
|
| 547 | 547 |
func (b *Builder) run(c *daemon.Container) error {
|
| 548 |
+ var errCh chan error |
|
| 549 |
+ if b.Verbose {
|
|
| 550 |
+ errCh = b.Daemon.Attach(&c.StreamConfig, c.Config.OpenStdin, c.Config.StdinOnce, c.Config.Tty, nil, b.OutStream, b.ErrStream) |
|
| 551 |
+ } |
|
| 552 |
+ |
|
| 548 | 553 |
//start the container |
| 549 | 554 |
if err := c.Start(); err != nil {
|
| 550 | 555 |
return err |
| 551 | 556 |
} |
| 552 | 557 |
|
| 553 |
- if b.Verbose {
|
|
| 554 |
- logsJob := b.Engine.Job("logs", c.ID)
|
|
| 555 |
- logsJob.Setenv("follow", "1")
|
|
| 556 |
- logsJob.Setenv("stdout", "1")
|
|
| 557 |
- logsJob.Setenv("stderr", "1")
|
|
| 558 |
- logsJob.Stdout.Add(b.OutStream) |
|
| 559 |
- logsJob.Stderr.Set(b.ErrStream) |
|
| 560 |
- if err := logsJob.Run(); err != nil {
|
|
| 561 |
- return err |
|
| 562 |
- } |
|
| 558 |
+ if err := <-errCh; err != nil {
|
|
| 559 |
+ return err |
|
| 563 | 560 |
} |
| 564 | 561 |
|
| 565 | 562 |
// Wait for it to finish |
| ... | ... |
@@ -101,7 +101,7 @@ func (daemon *Daemon) ContainerAttach(job *engine.Job) engine.Status {
|
| 101 | 101 |
cStderr = job.Stderr |
| 102 | 102 |
} |
| 103 | 103 |
|
| 104 |
- <-daemon.attach(&container.StreamConfig, container.Config.OpenStdin, container.Config.StdinOnce, container.Config.Tty, cStdin, cStdout, cStderr) |
|
| 104 |
+ <-daemon.Attach(&container.StreamConfig, container.Config.OpenStdin, container.Config.StdinOnce, container.Config.Tty, cStdin, cStdout, cStderr) |
|
| 105 | 105 |
// If we are in stdinonce mode, wait for the process to end |
| 106 | 106 |
// otherwise, simply return |
| 107 | 107 |
if container.Config.StdinOnce && !container.Config.Tty {
|
| ... | ... |
@@ -111,7 +111,7 @@ func (daemon *Daemon) ContainerAttach(job *engine.Job) engine.Status {
|
| 111 | 111 |
return engine.StatusOK |
| 112 | 112 |
} |
| 113 | 113 |
|
| 114 |
-func (daemon *Daemon) attach(streamConfig *StreamConfig, openStdin, stdinOnce, tty bool, stdin io.ReadCloser, stdout io.Writer, stderr io.Writer) chan error {
|
|
| 114 |
+func (daemon *Daemon) Attach(streamConfig *StreamConfig, openStdin, stdinOnce, tty bool, stdin io.ReadCloser, stdout io.Writer, stderr io.Writer) chan error {
|
|
| 115 | 115 |
var ( |
| 116 | 116 |
cStdout, cStderr io.ReadCloser |
| 117 | 117 |
cStdin io.WriteCloser |
| ... | ... |
@@ -218,7 +218,7 @@ func (d *Daemon) ContainerExecStart(job *engine.Job) engine.Status {
|
| 218 | 218 |
execConfig.StreamConfig.stdinPipe = ioutils.NopWriteCloser(ioutil.Discard) // Silently drop stdin |
| 219 | 219 |
} |
| 220 | 220 |
|
| 221 |
- attachErr := d.attach(&execConfig.StreamConfig, execConfig.OpenStdin, true, execConfig.ProcessConfig.Tty, cStdin, cStdout, cStderr) |
|
| 221 |
+ attachErr := d.Attach(&execConfig.StreamConfig, execConfig.OpenStdin, true, execConfig.ProcessConfig.Tty, cStdin, cStdout, cStderr) |
|
| 222 | 222 |
|
| 223 | 223 |
execErr := make(chan error) |
| 224 | 224 |
|