github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/service/dockerizier/dockerfile_yml.go (about) 1 package dockerizier 2 3 import ( 4 "gopkg.in/yaml.v2" 5 6 "github.com/artisanhe/tools/conf" 7 "github.com/artisanhe/tools/docker" 8 ) 9 10 var ( 11 Image = "${G7PAY_DOCKER_REGISTRY}/${PROJECT_GROUP}/${PROJECT_NAME}:${PROJECT_VERSION}" 12 FromImage = "${G7PAY_DOCKER_REGISTRY}/g7/env-golang:latest" 13 ) 14 15 func toDockerFileYML(envVars conf.EnvVars, serviceName string) string { 16 d := &docker.Dockerfile{ 17 From: FromImage, 18 Image: Image, 19 } 20 21 d = d.AddEnv("GOENV", "DEV") 22 for key, envVar := range envVars { 23 24 strValue := envVar.GetValue(false) 25 if strValue == "./swagger.json" { 26 d = d.AddContent(strValue, "./") 27 } 28 // should expose all config value to env 29 if envVar.FallbackValue != nil { 30 d = d.AddEnv(key, envVar.GetFallbackValue(false)) 31 32 } 33 } 34 35 d = d.WithWorkDir("/go/bin") 36 d = d.WithCmd("./"+serviceName, "-c=false") 37 d = d.WithExpose("80") 38 39 d = d.AddContent("./config", "./config") 40 d = d.AddContent("./"+serviceName, "./") 41 42 bytes, _ := yaml.Marshal(d) 43 return string(bytes) 44 }