github.com/profzone/eden-framework@v1.0.10/internal/generator/docker_generator.go (about) 1 package generator 2 3 import ( 4 "github.com/profzone/eden-framework/internal/generator/files" 5 "github.com/profzone/envconfig" 6 "github.com/sirupsen/logrus" 7 "gopkg.in/yaml.v2" 8 "path" 9 ) 10 11 const ( 12 Image = "${PROFZONE_DOCKER_REGISTRY}/${PROJECT_GROUP}/${PROJECT_NAME}:${PROJECT_VERSION}" 13 FromImage = "${PROFZONE_DOCKER_REGISTRY}/profzone/golang-runtime:1.14" 14 ) 15 16 type DockerGenerator struct { 17 ServiceName string 18 EnvVars []envconfig.EnvVar 19 } 20 21 func NewDockerGenerator(serviceName string, envVars []envconfig.EnvVar) *DockerGenerator { 22 return &DockerGenerator{ 23 ServiceName: serviceName, 24 EnvVars: envVars, 25 } 26 } 27 28 func (d *DockerGenerator) Load(path string) { 29 } 30 31 func (d *DockerGenerator) Pick() { 32 } 33 34 func (d *DockerGenerator) Output(outputPath string) Outputs { 35 outputs := Outputs{} 36 37 dockerFile := &files.Dockerfile{ 38 From: FromImage, 39 Image: Image, 40 } 41 dockerFile = dockerFile.AddEnv("GOENV", "DEV") 42 43 for _, envVar := range d.EnvVars { 44 strValue := envVar.GetValue(false) 45 dockerFile = dockerFile.AddEnv(envVar.Key, strValue) 46 } 47 48 dockerFile = dockerFile.WithWorkDir("/go/bin") 49 dockerFile = dockerFile.WithCmd("./"+d.ServiceName, "-d=false", "-m=false") 50 dockerFile = dockerFile.WithExpose("80") 51 52 dockerFile = dockerFile.AddContent("./build/configs", "./configs") 53 dockerFile = dockerFile.AddContent("./build/"+d.ServiceName, "./") 54 dockerFile = dockerFile.AddContent("./project.yml", "./") 55 dockerFile = dockerFile.AddContent("./api/openapi.json", "./") 56 57 content, err := yaml.Marshal(dockerFile) 58 if err != nil { 59 logrus.Panic(err) 60 } 61 62 configDefaultFile := files.NewConfigDefaultFile(d.EnvVars) 63 64 outputs.Add(path.Join(outputPath, "build/dockerfile.default.yml"), string(content)) 65 outputs.Add(path.Join(outputPath, "build/configs/default.yml"), configDefaultFile.String()) 66 return outputs 67 }