add official Dockerfile (#104)

This commit is contained in:
Joshua Humphries 2019-07-03 15:57:24 -04:00 committed by GitHub
parent 80425d1b17
commit 5631bba117
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 42 additions and 1 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
dist/ dist/
VERSION

33
Dockerfile Normal file
View File

@ -0,0 +1,33 @@
FROM golang:1.11.10-alpine as builder
MAINTAINER FullStory Engineering
# currently, a module build requires gcc (so Go tool can build
# module-aware versions of std library; it ships only w/ the
# non-module versions)
RUN apk update && apk add --no-cache ca-certificates git gcc g++ libc-dev
# create non-privileged group and user
RUN addgroup -S grpcurl && adduser -S grpcurl -G grpcurl
WORKDIR /tmp/fullstorydev/grpcurl
# copy just the files/sources we need to build grpcurl
COPY VERSION *.go go.* /tmp/fullstorydev/grpcurl/
COPY cmd /tmp/fullstorydev/grpcurl/cmd
# and build a completely static binary (so we can use
# scratch as basis for the final image)
ENV CGO_ENABLED=0
ENV GOOS=linux
ENV GOARCH=amd64
ENV GO111MODULE=on
RUN go build -o /grpcurl \
-ldflags "-w -extldflags \"-static\" -X \"main.version=$(cat VERSION)\"" \
./cmd/grpcurl
# New FROM so we have a nice'n'tiny image
FROM scratch
WORKDIR /
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=builder /etc/passwd /etc/passwd
COPY --from=builder /grpcurl /bin/grpcurl
USER grpcurl
ENTRYPOINT ["/bin/grpcurl"]

View File

@ -25,6 +25,12 @@ release:
@GO111MODULE=off go get github.com/goreleaser/goreleaser @GO111MODULE=off go get github.com/goreleaser/goreleaser
goreleaser --rm-dist goreleaser --rm-dist
.PHONY: docker
docker:
@echo $(dev_build_version) > VERSION
docker build -t fullstorydev/grpcurl:$(dev_build_version) .
@rm VERSION
.PHONY: checkgofmt .PHONY: checkgofmt
checkgofmt: checkgofmt:
gofmt -s -l . gofmt -s -l .

View File

@ -8,6 +8,7 @@ import (
"fmt" "fmt"
"io" "io"
"os" "os"
"path/filepath"
"strings" "strings"
"time" "time"
@ -161,7 +162,7 @@ func main() {
os.Exit(0) os.Exit(0)
} }
if *printVersion { if *printVersion {
fmt.Fprintf(os.Stderr, "%s %s\n", os.Args[0], version) fmt.Fprintf(os.Stderr, "%s %s\n", filepath.Base(os.Args[0]), version)
os.Exit(0) os.Exit(0)
} }