func BuildImage()

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
}