From 8147ad66ec71793263f03b39a26c7940ea7ce1aa Mon Sep 17 00:00:00 2001 From: Matthew McKeen Date: Mon, 6 Jan 2014 13:42:32 -0800 Subject: [PATCH] Start adding dockerfile provisioning to docker-import post-processor #774 --- .../docker-import/post-processor.go | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/post-processor/docker-import/post-processor.go b/post-processor/docker-import/post-processor.go index ef2ec3e39..c2f628af1 100644 --- a/post-processor/docker-import/post-processor.go +++ b/post-processor/docker-import/post-processor.go @@ -143,12 +143,35 @@ func (p *PostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact) (pac if p.config.Dockerfile != "" { cmd := exec.Command("docker", "build", id) - if err := cmd.Run(); err != nil { + + stdin, err := cmd.StdinPipe() + + if err != nil { + return nil, false, err + } + + // open Dockerfile + file, err := os.Open(p.config.Dockerfile) + + if err != nil { + ui.Say("Could not open Dockerfile: " + p.config.Dockerfile) + return nil, false, err + } + + defer file.Close() + + if err := cmd.Start(); err != nil { ui.Say("Failed to build image: " + id) return nil, false, err } - // TODO implement dockerfile provisioning + go func() { + io.Copy(stdin, file) + // close stdin so that program will exit + stdin.Close() + }() + + cmd.Wait() } return nil, false, nil