|
@@ -1,14 +1,8 @@
|
|
|
package buildme
|
|
|
|
|
|
import (
|
|
|
- "context"
|
|
|
- "fmt"
|
|
|
"io"
|
|
|
"os"
|
|
|
-
|
|
|
- "github.com/docker/docker/api/types"
|
|
|
- "github.com/docker/docker/api/types/container"
|
|
|
- docker "github.com/docker/docker/client"
|
|
|
)
|
|
|
|
|
|
// Project type
|
|
@@ -57,62 +51,3 @@ func (p *Project) Close() {
|
|
|
}
|
|
|
//os.Remove(tarFile) // Should remove??
|
|
|
}
|
|
|
-
|
|
|
-func (p *Project) Docker() error {
|
|
|
- log.Println("New docker environ")
|
|
|
- cli, err := docker.NewEnvClient()
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- dockertag := fmt.Sprintf("%s-builder", p.Name)
|
|
|
- log.Println("Building and tagging:", dockertag)
|
|
|
- ///////////////
|
|
|
- /// DOCKER OPERATION / BUILDER operation
|
|
|
- ctx := context.Background()
|
|
|
- {
|
|
|
- log.Println("Docker image build dockerfile:", p.Dockerfile)
|
|
|
- imageRes, err := cli.ImageBuild(ctx, p.Reader(), types.ImageBuildOptions{Tags: []string{dockertag}, Dockerfile: p.Dockerfile})
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- defer imageRes.Body.Close()
|
|
|
- io.Copy(os.Stdout, imageRes.Body) // Do some treatment somehow
|
|
|
- //inf, err := cli.Info(ctx)
|
|
|
- //log.Println("Info:", inf, err)
|
|
|
- }
|
|
|
-
|
|
|
- {
|
|
|
-
|
|
|
- log.Println("Testing running the builder")
|
|
|
- containerName := dockertag
|
|
|
- containerCfg := &container.Config{AttachStdout: true, Cmd: []string{"cat", "/buildme/dist.tar.gz"}}
|
|
|
- res, err := cli.ContainerCreate(ctx, containerCfg, nil, nil, containerName)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- log.Println("Created container ID:", res)
|
|
|
- log.Println("Starting container test")
|
|
|
- cr, _, err := cli.CopyFromContainer(ctx, res.ID, "/buildme/dist.tar.gz")
|
|
|
- if err != nil {
|
|
|
- log.Println("Copy error", err)
|
|
|
- }
|
|
|
- defer cr.Close()
|
|
|
-
|
|
|
- f, err := os.OpenFile("DIST/test.tar.gz", os.O_CREATE|os.O_WRONLY, os.FileMode(0600))
|
|
|
- io.Copy(f, cr)
|
|
|
-
|
|
|
- /*err = cli.ContainerStart(ctx, res.ID, types.ContainerStartOptions{AttachStdout: true})
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }*/
|
|
|
-
|
|
|
- log.Println("Please execute docker run", containerName, "> dist.tar.gz")
|
|
|
- log.Println("Trying to remove container", res)
|
|
|
- err = cli.ContainerRemove(ctx, res.ID, types.ContainerRemoveOptions{})
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- }
|
|
|
- return nil
|
|
|
-}
|