fix dockerfile generation bug (#277)

master
Kevin Wan 4 years ago committed by GitHub
parent da8f76e6bd
commit c686c93fb5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -16,9 +16,10 @@ import (
) )
const ( const (
etcDir = "etc" dockerfileName = "Dockerfile"
yamlEtx = ".yaml" etcDir = "etc"
cstOffset = 60 * 60 * 8 // 8 hours offset for Chinese Standard Time yamlEtx = ".yaml"
cstOffset = 60 * 60 * 8 // 8 hours offset for Chinese Standard Time
) )
type Docker struct { type Docker struct {
@ -26,6 +27,7 @@ type Docker struct {
GoRelPath string GoRelPath string
GoFile string GoFile string
ExeFile string ExeFile string
HasArgs bool
Argument string Argument string
} }
@ -96,12 +98,16 @@ func generateDockerfile(goFile string, args ...string) error {
return err return err
} }
pos := strings.IndexByte(projPath, '/') if len(projPath) == 0 {
if pos >= 0 { projPath = "."
projPath = projPath[pos+1:] } else {
pos := strings.IndexByte(projPath, os.PathSeparator)
if pos >= 0 {
projPath = projPath[pos+1:]
}
} }
out, err := util.CreateIfNotExist("Dockerfile") out, err := util.CreateIfNotExist(dockerfileName)
if err != nil { if err != nil {
return err return err
} }
@ -124,6 +130,7 @@ func generateDockerfile(goFile string, args ...string) error {
GoRelPath: projPath, GoRelPath: projPath,
GoFile: goFile, GoFile: goFile,
ExeFile: util.FileNameWithoutExt(filepath.Base(goFile)), ExeFile: util.FileNameWithoutExt(filepath.Base(goFile)),
HasArgs: builder.Len() > 0,
Argument: builder.String(), Argument: builder.String(),
}) })
} }

@ -22,8 +22,8 @@ ADD go.mod .
ADD go.sum . ADD go.sum .
RUN go mod download RUN go mod download
COPY . . COPY . .
COPY {{.GoRelPath}}/etc /app/etc {{if .HasArgs}}COPY {{.GoRelPath}}/etc /app/etc
RUN go build -ldflags="-s -w" -o /app/{{.ExeFile}} {{.GoRelPath}}/{{.GoFile}} {{end}}RUN go build -ldflags="-s -w" -o /app/{{.ExeFile}} {{.GoRelPath}}/{{.GoFile}}
FROM alpine FROM alpine
@ -33,8 +33,8 @@ ENV TZ Asia/Shanghai
WORKDIR /app WORKDIR /app
COPY --from=builder /app/{{.ExeFile}} /app/{{.ExeFile}} COPY --from=builder /app/{{.ExeFile}} /app/{{.ExeFile}}
COPY --from=builder /app/etc /app/etc {{if .HasArgs}}COPY --from=builder /app/etc /app/etc
{{end}}
CMD ["./{{.ExeFile}}"{{.Argument}}] CMD ["./{{.ExeFile}}"{{.Argument}}]
` `
) )

@ -27,7 +27,7 @@ import (
) )
var ( var (
BuildVersion = "20201125" BuildVersion = "1.1.1"
commands = []cli.Command{ commands = []cli.Command{
{ {
Name: "api", Name: "api",

@ -60,7 +60,6 @@ func FindGoModPath(dir string) (string, bool) {
var hasGoMod = false var hasGoMod = false
for { for {
if FileExists(filepath.Join(tempPath, goModeIdentifier)) { if FileExists(filepath.Join(tempPath, goModeIdentifier)) {
tempPath = filepath.Dir(tempPath)
rootPath = strings.TrimPrefix(absDir[len(tempPath):], "/") rootPath = strings.TrimPrefix(absDir[len(tempPath):], "/")
hasGoMod = true hasGoMod = true
break break

Loading…
Cancel
Save