in pkg/docker.go [233:272]
func BuildImage(dcli *client.Client, dockerFileContents []byte, labels map[string]string, tags []string) error {
buf := new(bytes.Buffer)
tw := tar.NewWriter(buf)
defer tw.Close()
tarHeader := &tar.Header{
Name: "Dockerfile",
Size: int64(len(dockerFileContents)),
}
err := tw.WriteHeader(tarHeader)
if err != nil {
return err
}
_, err = tw.Write(dockerFileContents)
if err != nil {
return err
}
dockerFileTarReader := bytes.NewReader(buf.Bytes())
ctx := context.Background()
imageBuildResponse, err := dcli.ImageBuild(
ctx,
dockerFileTarReader,
types.ImageBuildOptions{
Context: dockerFileTarReader,
Labels: labels,
Tags: tags,
// Remove: whether to remove the intermediate container used during
// the build.
Remove: true})
if err != nil {
return err
}
err = PrintStream(ctx, imageBuildResponse.Body)
if err != nil {
return err
}
return nil
}