|
@@ -24,14 +24,16 @@ const (
|
|
|
|
|
|
// Docker describes a dockerfile
|
|
|
type Docker struct {
|
|
|
- Chinese bool
|
|
|
- GoRelPath string
|
|
|
- GoFile string
|
|
|
- ExeFile string
|
|
|
- HasPort bool
|
|
|
- Port int
|
|
|
- Argument string
|
|
|
- Version string
|
|
|
+ Chinese bool
|
|
|
+ GoRelPath string
|
|
|
+ GoFile string
|
|
|
+ ExeFile string
|
|
|
+ HasPort bool
|
|
|
+ Port int
|
|
|
+ Argument string
|
|
|
+ Version string
|
|
|
+ HasTimezone bool
|
|
|
+ Timezone string
|
|
|
}
|
|
|
|
|
|
// DockerCommand provides the entry for goctl docker
|
|
@@ -47,6 +49,7 @@ func DockerCommand(c *cli.Context) (err error) {
|
|
|
version := c.String("version")
|
|
|
remote := c.String("remote")
|
|
|
branch := c.String("branch")
|
|
|
+ timezone := c.String("tz")
|
|
|
if len(remote) > 0 {
|
|
|
repo, _ := util.CloneIntoGitHome(remote, branch)
|
|
|
if len(repo) > 0 {
|
|
@@ -72,7 +75,7 @@ func DockerCommand(c *cli.Context) (err error) {
|
|
|
|
|
|
port := c.Int("port")
|
|
|
if _, err := os.Stat(etcDir); os.IsNotExist(err) {
|
|
|
- return generateDockerfile(goFile, port, version)
|
|
|
+ return generateDockerfile(goFile, port, version, timezone)
|
|
|
}
|
|
|
|
|
|
cfg, err := findConfig(goFile, etcDir)
|
|
@@ -80,7 +83,7 @@ func DockerCommand(c *cli.Context) (err error) {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
- if err := generateDockerfile(goFile, port, version, "-f", "etc/"+cfg); err != nil {
|
|
|
+ if err := generateDockerfile(goFile, port, version, timezone, "-f", "etc/"+cfg); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
@@ -121,7 +124,7 @@ func findConfig(file, dir string) (string, error) {
|
|
|
return files[0], nil
|
|
|
}
|
|
|
|
|
|
-func generateDockerfile(goFile string, port int, version string, args ...string) error {
|
|
|
+func generateDockerfile(goFile string, port int, version, timezone string, args ...string) error {
|
|
|
projPath, err := getFilePath(filepath.Dir(goFile))
|
|
|
if err != nil {
|
|
|
return err
|
|
@@ -150,14 +153,16 @@ func generateDockerfile(goFile string, port int, version string, args ...string)
|
|
|
_, offset := time.Now().Zone()
|
|
|
t := template.Must(template.New("dockerfile").Parse(text))
|
|
|
return t.Execute(out, Docker{
|
|
|
- Chinese: offset == cstOffset,
|
|
|
- GoRelPath: projPath,
|
|
|
- GoFile: goFile,
|
|
|
- ExeFile: pathx.FileNameWithoutExt(filepath.Base(goFile)),
|
|
|
- HasPort: port > 0,
|
|
|
- Port: port,
|
|
|
- Argument: builder.String(),
|
|
|
- Version: version,
|
|
|
+ Chinese: offset == cstOffset,
|
|
|
+ GoRelPath: projPath,
|
|
|
+ GoFile: goFile,
|
|
|
+ ExeFile: pathx.FileNameWithoutExt(filepath.Base(goFile)),
|
|
|
+ HasPort: port > 0,
|
|
|
+ Port: port,
|
|
|
+ Argument: builder.String(),
|
|
|
+ Version: version,
|
|
|
+ HasTimezone: len(timezone) > 0,
|
|
|
+ Timezone: timezone,
|
|
|
})
|
|
|
}
|
|
|
|