|
6 | 6 | "errors" |
7 | 7 | "fmt" |
8 | 8 | "io" |
9 | | - "io/ioutil" |
10 | | - "os" |
11 | | - "path" |
12 | 9 | "sort" |
13 | 10 | "strconv" |
14 | 11 | "strings" |
@@ -185,10 +182,9 @@ func (d *Docker) ListContainers(p *Project) ([]*Container, error) { |
185 | 182 | } |
186 | 183 |
|
187 | 184 | func (d *Docker) ListImages(p *Project) ([]*Image, error) { |
188 | | - Debug("Retrieving current containers", "project", p, "end-point", d.endPoint) |
| 185 | + Debug("Retrieving current images", "project", p, "end-point", d.endPoint) |
189 | 186 |
|
190 | 187 | l, err := d.client.ListImages(docker.ListImagesOptions{All: true}) |
191 | | - |
192 | 188 | if err != nil { |
193 | 189 | return nil, err |
194 | 190 | } |
@@ -216,7 +212,7 @@ func (d *Docker) BuildImage( |
216 | 212 | Debug("Building image", "project", p, "revision", rev, "end-point", d.endPoint) |
217 | 213 |
|
218 | 214 | input := bytes.NewBuffer(nil) |
219 | | - if err := d.buildTar(p, dockerfile.Get(), input); err != nil { |
| 215 | + if err := d.buildTar(p, dockerfile, input); err != nil { |
220 | 216 | return err |
221 | 217 | } |
222 | 218 |
|
@@ -395,52 +391,36 @@ func (d *Docker) formatPort(port string) (guest docker.Port, host docker.PortBin |
395 | 391 | return |
396 | 392 | } |
397 | 393 |
|
398 | | -func (d *Docker) buildTar(p *Project, dockerfile []byte, buf *bytes.Buffer) error { |
399 | | - t := time.Now() |
400 | | - |
| 394 | +func (d *Docker) buildTar(p *Project, df *Dockerfile, buf *bytes.Buffer) error { |
401 | 395 | tr := tar.NewWriter(buf) |
402 | | - tr.WriteHeader(&tar.Header{ |
403 | | - Name: "Dockerfile", |
404 | | - Size: int64(len(dockerfile)), |
405 | | - ModTime: t, |
406 | | - AccessTime: t, |
407 | | - ChangeTime: t, |
408 | | - }) |
| 396 | + defer tr.Close() |
409 | 397 |
|
410 | | - if _, err := tr.Write(dockerfile); err != nil { |
| 398 | + if err := d.addDockerFileToTar(tr, df); err != nil { |
411 | 399 | return err |
412 | 400 | } |
413 | 401 |
|
414 | | - for _, file := range p.Files { |
415 | | - if err := d.addFileToTar(file, tr); err != nil { |
| 402 | + for _, f := range df.Files { |
| 403 | + if err := d.addFileToTar(tr, f.Name, f.Content); err != nil { |
416 | 404 | return err |
417 | 405 | } |
418 | 406 | } |
419 | 407 |
|
420 | | - tr.Close() |
421 | 408 | return nil |
422 | 409 | } |
423 | 410 |
|
424 | | -func (d *Docker) addFileToTar(file string, tr *tar.Writer) error { |
425 | | - content, err := ioutil.ReadFile(file) |
426 | | - if err != nil { |
427 | | - return err |
428 | | - } |
429 | | - |
430 | | - fInfo, err := os.Lstat(file) |
431 | | - if err != nil { |
432 | | - return err |
433 | | - } |
434 | | - |
435 | | - h, err := tar.FileInfoHeader(fInfo, "") |
436 | | - h.Name = path.Base(file) |
437 | | - if err != nil { |
438 | | - return err |
439 | | - } |
| 411 | +func (d *Docker) addDockerFileToTar(tr *tar.Writer, df *Dockerfile) error { |
| 412 | + return d.addFileToTar(tr, "Dockerfile", df.Get()) |
| 413 | +} |
440 | 414 |
|
441 | | - if err := tr.WriteHeader(h); err != nil { |
442 | | - return err |
443 | | - } |
| 415 | +func (d *Docker) addFileToTar(tr *tar.Writer, file string, content []byte) error { |
| 416 | + t := time.Now() |
| 417 | + tr.WriteHeader(&tar.Header{ |
| 418 | + Name: file, |
| 419 | + Size: int64(len(content)), |
| 420 | + ModTime: t, |
| 421 | + AccessTime: t, |
| 422 | + ChangeTime: t, |
| 423 | + }) |
444 | 424 |
|
445 | 425 | if _, err := tr.Write(content); err != nil { |
446 | 426 | return err |
|
0 commit comments