Skip to content

Commit c10a100

Browse files
committed
pkg/scaffold/build_dockerfile*.go: multi-stage, customizeable Dockerfile
1 parent 1b38d1f commit c10a100

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed

pkg/scaffold/build_dockerfile.go

+20-2
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,27 @@ func (s *Dockerfile) GetInput() (input.Input, error) {
3434
return s.Input, nil
3535
}
3636

37-
const dockerfileTmpl = `FROM alpine:3.6
37+
const dockerfileTmpl = `# Binary builder image
38+
FROM golang:1.10.3 AS builder
39+
40+
ENV GOPATH /go
41+
ENV CGO_ENABLED 0
42+
ENV GOOS linux
43+
ENV GOARCH amd64
44+
45+
WORKDIR /go/src/{{ .Repo }}
46+
COPY . /go/src/{{ .Repo }}
47+
48+
RUN go build -o /go/bin/{{ .ProjectName }} {{ .Repo }}/cmd/{{ .ProjectName }}/main.go
49+
50+
# Base image
51+
FROM alpine:3.6
52+
COPY --from=builder /go/bin/{{ .ProjectName }} /usr/local/bin/{{ .ProjectName }}
3853
3954
USER nobody
4055
41-
ADD build/_output/bin/{{.ProjectName}} /usr/local/bin/{{.ProjectName}}
56+
# Add customizations here.
57+
58+
59+
ENTRYPOINT ["{{ .ProjectName }}"]
4260
`

pkg/scaffold/build_dockerfile_test.go

+20-2
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,27 @@ func TestDockerfile(t *testing.T) {
3131
}
3232
}
3333

34-
const dockerfileExp = `FROM alpine:3.6
34+
const dockerfileExp = `# Binary builder image
35+
FROM golang:1.10.3 AS builder
36+
37+
ENV GOPATH /go
38+
ENV CGO_ENABLED 0
39+
ENV GOOS linux
40+
ENV GOARCH amd64
41+
42+
WORKDIR /go/src/github.com/example-inc/app-operator
43+
COPY . /go/src/github.com/example-inc/app-operator
44+
45+
RUN go build -o /go/bin/app-operator github.com/example-inc/app-operator/cmd/app-operator/main.go
46+
47+
# Base image
48+
FROM alpine:3.6
49+
COPY --from=builder /go/bin/app-operator /usr/local/bin/app-operator
3550
3651
USER nobody
3752
38-
ADD build/_output/bin/app-operator /usr/local/bin/app-operator
53+
# Add customizations here.
54+
55+
56+
ENTRYPOINT ["app-operator"]
3957
`

0 commit comments

Comments
 (0)