diff --git a/tools/goctl/api/gogen/genhandlers.go b/tools/goctl/api/gogen/genhandlers.go index 5a3bec06..cdddefbe 100644 --- a/tools/goctl/api/gogen/genhandlers.go +++ b/tools/goctl/api/gogen/genhandlers.go @@ -75,7 +75,8 @@ func genHandler(dir string, cfg *config.Config, group spec.Group, route spec.Rou }) } -func doGenToFile(dir, handler string, cfg *config.Config, group spec.Group, route spec.Route, handleObj Handler) error { +func doGenToFile(dir, handler string, cfg *config.Config, group spec.Group, + route spec.Route, handleObj Handler) error { filename, err := format.FileNamingFormat(cfg.NamingFormat, handler) if err != nil { return err diff --git a/tools/goctl/docker/docker.go b/tools/goctl/docker/docker.go index 907f7aa0..efd62bb8 100644 --- a/tools/goctl/docker/docker.go +++ b/tools/goctl/docker/docker.go @@ -6,6 +6,7 @@ import ( "path/filepath" "strings" "text/template" + "time" "github.com/tal-tech/go-zero/tools/goctl/util" ctlutil "github.com/tal-tech/go-zero/tools/goctl/util" @@ -13,10 +14,19 @@ import ( ) const ( - etcDir = "etc" - yamlEtx = ".yaml" + etcDir = "etc" + yamlEtx = ".yaml" + cstOffset = 60 * 60 * 8 // 8 hours offset for Chinese Standard Time ) +type Docker struct { + Chinese bool + GoRelPath string + GoFile string + ExeFile string + Argument string +} + func DockerCommand(c *cli.Context) error { goFile := c.String("go") if len(goFile) == 0 { @@ -87,12 +97,14 @@ func generateDockerfile(goFile string, args ...string) error { builder.WriteString(`, "` + arg + `"`) } + _, offset := time.Now().Zone() t := template.Must(template.New("dockerfile").Parse(text)) - return t.Execute(out, map[string]string{ - "goRelPath": projPath, - "goFile": goFile, - "exeFile": util.FileNameWithoutExt(filepath.Base(goFile)), - "argument": builder.String(), + return t.Execute(out, Docker{ + Chinese: offset == cstOffset, + GoRelPath: projPath, + GoFile: goFile, + ExeFile: util.FileNameWithoutExt(filepath.Base(goFile)), + Argument: builder.String(), }) } diff --git a/tools/goctl/docker/template.go b/tools/goctl/docker/template.go index 08e298fe..7d96d57e 100644 --- a/tools/goctl/docker/template.go +++ b/tools/goctl/docker/template.go @@ -14,13 +14,16 @@ LABEL stage=gobuilder ENV CGO_ENABLED 0 ENV GOOS linux -ENV GOPROXY https://goproxy.cn,direct +{{if .Chinese}}ENV GOPROXY https://goproxy.cn,direct{{end}} WORKDIR /build/zero + +ADD go.mod . +ADD go.sum . +RUN go mod download COPY . . -RUN sh -c "[ -f go.mod ]" || exit -COPY {{.goRelPath}}/etc /app/etc -RUN go build -ldflags="-s -w" -o /app/{{.exeFile}} {{.goRelPath}}/{{.goFile}} +COPY {{.GoRelPath}}/etc /app/etc +RUN go build -ldflags="-s -w" -o /app/{{.ExeFile}} {{.GoRelPath}}/{{.GoFile}} FROM alpine @@ -31,10 +34,10 @@ RUN apk add --no-cache tzdata ENV TZ Asia/Shanghai WORKDIR /app -COPY --from=builder /app/{{.exeFile}} /app/{{.exeFile}} +COPY --from=builder /app/{{.ExeFile}} /app/{{.ExeFile}} COPY --from=builder /app/etc /app/etc -CMD ["./{{.exeFile}}"{{.argument}}] +CMD ["./{{.ExeFile}}"{{.Argument}}] ` )