Commit 00d3ee42 authored by Matthew McKeen's avatar Matthew McKeen

docker-import: finish up Dockerfile provisioning, Add TODO for next section #774

parent 208b330b
......@@ -67,6 +67,8 @@ func (p *PostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact) (pac
id := artifact.Id()
ui.Say("Importing image: " + id)
// TODO Set artifact ID so that docker-push can use it
if p.config.Tag == "" {
cmd := exec.Command("docker",
......@@ -142,7 +144,9 @@ func (p *PostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact) (pac
// Process Dockerfile if provided
if p.config.Dockerfile != "" {
cmd := exec.Command("docker", "build", id)
if p.config.Tag != "" {
cmd := exec.Command("docker", "build", "-t="+p.config.Repository+":"+p.config.Tag, "-")
stdin, err := cmd.StdinPipe()
......@@ -158,6 +162,8 @@ func (p *PostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact) (pac
return nil, false, err
}
ui.Say(id)
defer file.Close()
if err := cmd.Start(); err != nil {
......@@ -173,8 +179,41 @@ func (p *PostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact) (pac
cmd.Wait()
// TODO make sure we re-tag instead of create new image
// automatically use previous image as base of new image
} else {
cmd := exec.Command("docker", "build", "-t="+p.config.Repository, "-")
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
}
ui.Say(id)
defer file.Close()
if err := cmd.Start(); err != nil {
ui.Say("Failed to build image: " + id)
return nil, false, err
}
go func() {
io.Copy(stdin, file)
// close stdin so that program will exit
stdin.Close()
}()
cmd.Wait()
}
}
return nil, false, nil
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment