Skip to content

Commit

Permalink
feat: improve docker architecture and scalability
Browse files Browse the repository at this point in the history
Add compose base

Signed-off-by: Vasek - Tom C <[email protected]>
  • Loading branch information
TomChv committed Jan 22, 2025
1 parent 1700d59 commit fc21c47
Show file tree
Hide file tree
Showing 25 changed files with 511 additions and 209 deletions.
38 changes: 27 additions & 11 deletions docker_sdk/src/codebase/codebase.go
Original file line number Diff line number Diff line change
@@ -1,30 +1,46 @@
package codebase

import (
"context"
"fmt"
"os"

"dagger.io/dockersdk/dockerfile"
"dagger.io/dockersdk/codebase/dockercompose"
"dagger.io/dockersdk/codebase/dockerfile"
)

const CodebasePath = "/app"


type Codebase struct {
dockerfile *dockerfile.Dockerfile
dockerfile *dockerfile.Dockerfile
dockercompose *dockercompose.DockerCompose
}

func New() (*Codebase, error) {
dockerfile, exists, err := getDockerfile(CodebasePath)
func New(ctx context.Context) (*Codebase, error) {
dir, err := os.ReadDir(CodebasePath)
if err != nil {
return nil, fmt.Errorf("failed to read source directory: %w", err)
}

dockerfile, dockerfileExists, err := getDockerfile(CodebasePath, dir)
if err != nil {
return nil, fmt.Errorf("failed to get Dockerfile: %w", err)
}

if !exists {
return nil, fmt.Errorf("Dockerfile not found in %s", CodebasePath)
dockercompose, composeExistsExists, err := getDockerCompose(ctx, CodebasePath, dir)
if err != nil {
return nil, fmt.Errorf("failed to get docker-compose file: %w", err)
}

// TODO: Check for sub directories/dockerfile
if !dockerfileExists && !composeExistsExists {
return nil, fmt.Errorf("Dockerfile or docker-compose.yml not found in user project")
}

return &Codebase{dockerfile: dockerfile}, nil
}
// TODO: Check for sub directories/dockerfile

func (c *Codebase) Dockerfile() *dockerfile.Dockerfile {
return c.dockerfile
return &Codebase{
dockerfile: dockerfile,
dockercompose: dockercompose,
}, nil
}
3 changes: 0 additions & 3 deletions docker_sdk/src/codebase/consts.go

This file was deleted.

56 changes: 56 additions & 0 deletions docker_sdk/src/codebase/dockercompose/docker_compose.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package dockercompose

import (
"context"
"fmt"

"github.com/compose-spec/compose-go/loader"
"github.com/compose-spec/compose-go/types"
)

type DockerCompose struct {
filename string
project *types.Project
}

func NewDockerCompose(ctx context.Context, filename string, content []byte) (*DockerCompose, error) {
project, err := loader.LoadWithContext(ctx, types.ConfigDetails{
ConfigFiles: []types.ConfigFile{
{
Config: map[string]interface{}{
"name": "dockersdk",
},
},
{
Content: content,
},
},
}, loader.WithSkipValidation)
if err != nil {
return nil, fmt.Errorf("failed to load %s: %w", filename, err)
}

return &DockerCompose{
filename: filename,
project: project,
}, nil
}

func (d *DockerCompose) Services() []*Service {
services := make([]*Service, len(d.project.Services))

for i, service := range d.project.Services {
services[i] = NewService(&service)
}

return services
}

func (d *DockerCompose) String() string {
yaml, err := d.project.MarshalYAML()
if err != nil {
return "could not display docker-compose.yml"
}

return string(yaml)
}
25 changes: 25 additions & 0 deletions docker_sdk/src/codebase/dockercompose/service.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package dockercompose

import "github.com/compose-spec/compose-go/types"

type Service struct {
s *types.ServiceConfig
}

func NewService(service *types.ServiceConfig) *Service {
return &Service{
s: service,
}
}

func (s *Service) Name() string {
return s.s.Name
}

func (s *Service) Image() string {
return s.s.Image
}

func (s *Service) Workdir() string {
return s.s.WorkingDir
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ type Dockerfile struct {
secrets []string
}

func New(filename string, file *os.File) (*Dockerfile, error) {
func NewDockerfile(filename string, file *os.File) (*Dockerfile, error) {
content, err := parser.Parse(file)
if err != nil {
return nil, err
Expand Down
52 changes: 52 additions & 0 deletions docker_sdk/src/codebase/finder.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package codebase

import (
"context"
"fmt"
"os"
"strings"

"dagger.io/dockersdk/codebase/dockercompose"
"dagger.io/dockersdk/codebase/dockerfile"
)

func getDockerfile(dirPath string, dir []os.DirEntry) (*dockerfile.Dockerfile, bool, error) {
for _, entry := range dir {
if entry.Name() == "Dockerfile" || strings.HasSuffix(entry.Name(), ".Dockerfile") {
file, err := os.Open(dirPath + "/" + entry.Name())
if err != nil {
return nil, true, fmt.Errorf("failed to open Dockerfile: %w", err)
}
defer file.Close()

dockerfile, err := dockerfile.NewDockerfile(entry.Name(), file)
if err != nil {
return nil, true, fmt.Errorf("failed to parse Dockerfile: %w", err)
}

return dockerfile, true, nil
}
}

return nil, false, nil
}

func getDockerCompose(ctx context.Context,dirPath string, dir []os.DirEntry) (*dockercompose.DockerCompose, bool, error) {
for _, entry := range dir {
if entry.Name() == "docker-compose.yml" || entry.Name() == "docker-compose.yaml" {
fileContent, err := os.ReadFile(dirPath + "/" + entry.Name())
if err != nil {
return nil, true, fmt.Errorf("failed to get %s content: %w", entry.Name(), err)
}

compose, err := dockercompose.NewDockerCompose(ctx, entry.Name(), fileContent)
if err != nil {
return nil, true, fmt.Errorf("failed to parse docker-compose.yml: %w", err)
}

return compose, true, nil
}
}

return nil, false, nil
}
35 changes: 0 additions & 35 deletions docker_sdk/src/codebase/get_dockerfile.go

This file was deleted.

28 changes: 28 additions & 0 deletions docker_sdk/src/codebase/to_module.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package codebase

import (
"fmt"

"dagger.io/dockersdk/module"
"dagger.io/dockersdk/module/docker"
)

func (c *Codebase) ToModule(name string) *module.Module {
dockerModule := docker.New("Docker")

if c.dockerfile != nil {
dockerModule = dockerModule.WithDockerfile(c.dockerfile)
}

if c.dockercompose != nil {
fmt.Println(c.dockercompose)
}

if c.dockercompose != nil {
for _, service := range c.dockercompose.Services() {
dockerModule = dockerModule.WithService(service)
}
}

return module.Build(name, dockerModule)
}
18 changes: 18 additions & 0 deletions docker_sdk/src/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,29 @@ require (
github.com/vektah/gqlparser/v2 v2.5.20
)

require (
github.com/distribution/reference v0.6.0 // indirect
github.com/docker/go-connections v0.5.0 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
github.com/imdario/mergo v0.3.16 // indirect
github.com/mattn/go-shellwords v1.0.12 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

require (
github.com/99designs/gqlgen v0.17.57 // indirect
github.com/Khan/genqlient v0.7.0 // indirect
github.com/adrg/xdg v0.5.3 // indirect
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
github.com/compose-spec/compose-go v1.20.2
github.com/compose-spec/compose-go/v2 v2.4.7
github.com/containerd/typeurl/v2 v2.2.3 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
Expand Down
35 changes: 35 additions & 0 deletions docker_sdk/src/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,28 @@ github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNg
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/compose-spec/compose-go v1.20.2 h1:u/yfZHn4EaHGdidrZycWpxXgFffjYULlTbRfJ51ykjQ=
github.com/compose-spec/compose-go v1.20.2/go.mod h1:+MdqXV4RA7wdFsahh/Kb8U0pAJqkg7mr4PM9tFKU8RM=
github.com/compose-spec/compose-go/v2 v2.4.7 h1:WNpz5bIbKG+G+w9pfu72B1ZXr+Og9jez8TMEo8ecXPk=
github.com/compose-spec/compose-go/v2 v2.4.7/go.mod h1:lFN0DrMxIncJGYAXTfWuajfwj5haBJqrBkarHcnjJKc=
github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40=
github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss=
github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
Expand All @@ -29,12 +42,20 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I=
github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk=
github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/moby/buildkit v0.19.0 h1:w9G1p7sArvCGNkpWstAqJfRQTXBKukMyMK1bsah1HNo=
github.com/moby/buildkit v0.19.0/go.mod h1:WiHBFTgWV8eB1AmPxIWsAlKjUACAwm3X/14xOV4VWew=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
Expand All @@ -43,12 +64,23 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/sosodev/duration v1.3.1 h1:qtHBDMQ6lvMQsL15g4aopM4HEfOaYuhWBw3NPTtlqq4=
github.com/sosodev/duration v1.3.1/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/vektah/gqlparser/v2 v2.5.20 h1:kPaWbhBntxoZPaNdBaIPT1Kh0i1b/onb5kXgEdP5JCo=
github.com/vektah/gqlparser/v2 v2.5.20/go.mod h1:xMl+ta8a5M1Yo1A1Iwt/k7gSpscwSnHZdw7tfhEGfTM=
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=
Expand Down Expand Up @@ -104,6 +136,7 @@ golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
Expand All @@ -126,5 +159,7 @@ google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0=
google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw=
google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io=
google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
Loading

0 comments on commit fc21c47

Please sign in to comment.