ソースを参照

goctl docker command add -version (#1206)

* feature(优化): 优化goctl

goctl docker 命令新增version参数,指定builder golang 版本

* feature(优化): 优化goctl

goctl docker 命令新增version参数,指定builder golang 版本
晨曦中 3 年 前
コミット
539215d7df
3 ファイル変更15 行追加4 行削除
  1. 10 3
      tools/goctl/docker/docker.go
  2. 1 1
      tools/goctl/docker/template.go
  3. 4 0
      tools/goctl/goctl.go

+ 10 - 3
tools/goctl/docker/docker.go

@@ -30,6 +30,7 @@ type Docker struct {
 	HasPort   bool
 	Port      int
 	Argument  string
+	Version   string
 }
 
 // DockerCommand provides the entry for goctl docker
@@ -42,6 +43,11 @@ func DockerCommand(c *cli.Context) (err error) {
 
 	goFile := c.String("go")
 	home := c.String("home")
+	version := c.String("version")
+
+	if len(version) > 0 {
+		version = version + "-"
+	}
 
 	if len(home) > 0 {
 		util.RegisterGoctlHome(home)
@@ -57,7 +63,7 @@ func DockerCommand(c *cli.Context) (err error) {
 
 	port := c.Int("port")
 	if _, err := os.Stat(etcDir); os.IsNotExist(err) {
-		return generateDockerfile(goFile, port)
+		return generateDockerfile(goFile, port, version)
 	}
 
 	cfg, err := findConfig(goFile, etcDir)
@@ -65,7 +71,7 @@ func DockerCommand(c *cli.Context) (err error) {
 		return err
 	}
 
-	if err := generateDockerfile(goFile, port, "-f", "etc/"+cfg); err != nil {
+	if err := generateDockerfile(goFile, port, version, "-f", "etc/"+cfg); err != nil {
 		return err
 	}
 
@@ -106,7 +112,7 @@ func findConfig(file, dir string) (string, error) {
 	return files[0], nil
 }
 
-func generateDockerfile(goFile string, port int, args ...string) error {
+func generateDockerfile(goFile string, port int, version string, args ...string) error {
 	projPath, err := getFilePath(filepath.Dir(goFile))
 	if err != nil {
 		return err
@@ -147,6 +153,7 @@ func generateDockerfile(goFile string, port int, args ...string) error {
 		HasPort:   port > 0,
 		Port:      port,
 		Argument:  builder.String(),
+		Version:   version,
 	})
 }
 

+ 1 - 1
tools/goctl/docker/template.go

@@ -8,7 +8,7 @@ import (
 const (
 	category           = "docker"
 	dockerTemplateFile = "docker.tpl"
-	dockerTemplate     = `FROM golang:alpine AS builder
+	dockerTemplate     = `FROM golang:{{.Version}}alpine AS builder
 
 LABEL stage=gobuilder
 

+ 4 - 0
tools/goctl/goctl.go

@@ -255,6 +255,10 @@ var commands = []cli.Command{
 				Name:  "home",
 				Usage: "the goctl home path of the template",
 			},
+			cli.StringFlag{
+				Name:  "version",
+				Usage: "the goctl builder golang image version",
+			},
 		},
 		Action: docker.DockerCommand,
 	},