Skip to content

Commit

Permalink
Added templating for docker-compose
Browse files Browse the repository at this point in the history
  • Loading branch information
mihailistov committed Oct 16, 2019
1 parent 7b44277 commit 025479a
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 4 deletions.
1 change: 1 addition & 0 deletions cmd/generate.go
Expand Up @@ -48,6 +48,7 @@ var generateCmd = &cobra.Command{
proto.Generate(Templator, cfg)
golang.Generate(Templator, cfg)
docker.GenerateGoAppDockerFile(Templator, cfg)
docker.GenerateGoDockerCompose(Templator, cfg)
case React:
react.Generate(Templator, cfg)
}
Expand Down
18 changes: 18 additions & 0 deletions example/hello-world/docker-compose.yml
@@ -0,0 +1,18 @@
version: "3.7"

services:
app:
build:
context: .
dockerfile: docker/app/Dockerfile
ports:
- "3000:3000"
http:
build:
context: .
dockerfile: docker/http/Dockerfile
environment:
- APP_HOST=app
- APP_PORT=3000
ports:
- "8080:8080"
4 changes: 4 additions & 0 deletions generate/docker/generate.go
Expand Up @@ -14,3 +14,7 @@ func GenerateGoAppDockerFile(templator *templator.Templator, config *config.Comm
func GenerateGoHttpGWDockerFile(templator *templator.Templator, config *config.Commit0Config) {
util.TemplateFileIfDoesNotExist("docker/http", "Dockerfile", templator.Docker.HttpGatewayDocker, config)
}

func GenerateGoDockerCompose(templator *templator.Templator, config *config.Commit0Config) {
util.TemplateFileIfDoesNotExist("", "docker-compose.yml", templator.Docker.DockerCompose, config)
}
20 changes: 20 additions & 0 deletions templates/docker/dockercompose.tmpl
@@ -0,0 +1,20 @@
version: "3.7"

services:
app:
build:
context: .
dockerfile: docker/app/Dockerfile
ports:
- "{{ .Network.Grpc.Port }}:{{ .Network.Grpc.Port }}"
{{ if .Network.Http.Enabled }}
http:
build:
context: .
dockerfile: docker/http/Dockerfile
environment:
- APP_HOST=app
- APP_PORT={{ .Network.Grpc.Port }}
ports:
- "{{ .Network.Http.Port }}:{{ .Network.Http.Port }}"
{{- end}}
5 changes: 5 additions & 0 deletions templator/templator.go
Expand Up @@ -15,6 +15,7 @@ type DockerTemplator struct {
ApplicationDocker *template.Template
HttpGatewayDocker *template.Template
DockerIgnore *template.Template
DockerCompose *template.Template
}

type GoTemplator struct {
Expand Down Expand Up @@ -112,10 +113,14 @@ func NewDockerFileTemplator(box *packr.Box) *DockerTemplator {
ignoreTemplateSource, _ := box.FindString("docker/dockerignore.tmpl")
ignoreTemplate, _ := template.New("Dockerignore").Parse(ignoreTemplateSource)

composeTemplateSource, _ := box.FindString("docker/dockercompose.tmpl")
composeTemplate, _ := template.New("Dockercompose").Parse(composeTemplateSource)

return &DockerTemplator{
ApplicationDocker: appTemplate,
HttpGatewayDocker: httpTemplate,
DockerIgnore: ignoreTemplate,
DockerCompose: composeTemplate,
}
}

Expand Down
11 changes: 7 additions & 4 deletions util/util.go
Expand Up @@ -4,6 +4,7 @@ import (
"fmt"
"log"
"os"
"path"
"strings"
"text/template"
)
Expand Down Expand Up @@ -42,12 +43,14 @@ func TemplateFileAndOverwrite(fileDir string, fileName string, template *templat
}

func TemplateFileIfDoesNotExist(fileDir string, fileName string, template *template.Template, data interface{}) {
fullFilePath := fmt.Sprintf("%v/%v", fileDir, fileName)
fullFilePath := path.Join(fileDir, fileName)

if _, err := os.Stat(fullFilePath); os.IsNotExist(err) {
err := CreateDirIfDoesNotExist(fileDir)
if err != nil {
log.Printf("Error creating directory %v: %v", fullFilePath, err)
if (fileDir != "") {
err := CreateDirIfDoesNotExist(fileDir)
if err != nil {
log.Printf("Error creating directory %v: %v", fullFilePath, err)
}
}
createTemplatedFile(fullFilePath, template, data)
} else {
Expand Down

0 comments on commit 025479a

Please sign in to comment.