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  }