goctl docker command add -version (#1206)
* feature(优化): 优化goctl goctl docker 命令新增version参数,指定builder golang 版本 * feature(优化): 优化goctl goctl docker 命令新增version参数,指定builder golang 版本
This commit is contained in:
@@ -30,6 +30,7 @@ type Docker struct {
|
|||||||
HasPort bool
|
HasPort bool
|
||||||
Port int
|
Port int
|
||||||
Argument string
|
Argument string
|
||||||
|
Version string
|
||||||
}
|
}
|
||||||
|
|
||||||
// DockerCommand provides the entry for goctl docker
|
// DockerCommand provides the entry for goctl docker
|
||||||
@@ -42,6 +43,11 @@ func DockerCommand(c *cli.Context) (err error) {
|
|||||||
|
|
||||||
goFile := c.String("go")
|
goFile := c.String("go")
|
||||||
home := c.String("home")
|
home := c.String("home")
|
||||||
|
version := c.String("version")
|
||||||
|
|
||||||
|
if len(version) > 0 {
|
||||||
|
version = version + "-"
|
||||||
|
}
|
||||||
|
|
||||||
if len(home) > 0 {
|
if len(home) > 0 {
|
||||||
util.RegisterGoctlHome(home)
|
util.RegisterGoctlHome(home)
|
||||||
@@ -57,7 +63,7 @@ func DockerCommand(c *cli.Context) (err error) {
|
|||||||
|
|
||||||
port := c.Int("port")
|
port := c.Int("port")
|
||||||
if _, err := os.Stat(etcDir); os.IsNotExist(err) {
|
if _, err := os.Stat(etcDir); os.IsNotExist(err) {
|
||||||
return generateDockerfile(goFile, port)
|
return generateDockerfile(goFile, port, version)
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg, err := findConfig(goFile, etcDir)
|
cfg, err := findConfig(goFile, etcDir)
|
||||||
@@ -65,7 +71,7 @@ func DockerCommand(c *cli.Context) (err error) {
|
|||||||
return err
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,7 +112,7 @@ func findConfig(file, dir string) (string, error) {
|
|||||||
return files[0], nil
|
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))
|
projPath, err := getFilePath(filepath.Dir(goFile))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -147,6 +153,7 @@ func generateDockerfile(goFile string, port int, args ...string) error {
|
|||||||
HasPort: port > 0,
|
HasPort: port > 0,
|
||||||
Port: port,
|
Port: port,
|
||||||
Argument: builder.String(),
|
Argument: builder.String(),
|
||||||
|
Version: version,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
const (
|
const (
|
||||||
category = "docker"
|
category = "docker"
|
||||||
dockerTemplateFile = "docker.tpl"
|
dockerTemplateFile = "docker.tpl"
|
||||||
dockerTemplate = `FROM golang:alpine AS builder
|
dockerTemplate = `FROM golang:{{.Version}}alpine AS builder
|
||||||
|
|
||||||
LABEL stage=gobuilder
|
LABEL stage=gobuilder
|
||||||
|
|
||||||
|
|||||||
@@ -255,6 +255,10 @@ var commands = []cli.Command{
|
|||||||
Name: "home",
|
Name: "home",
|
||||||
Usage: "the goctl home path of the template",
|
Usage: "the goctl home path of the template",
|
||||||
},
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "version",
|
||||||
|
Usage: "the goctl builder golang image version",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Action: docker.DockerCommand,
|
Action: docker.DockerCommand,
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user