FROM golang:1.9.7 as build ARG VERSION ARG GIT_COMMIT RUN mkdir -p /go/src/github.com/openfaas/faas/watchdog WORKDIR /go/src/github.com/openfaas/faas/watchdog COPY main.go . COPY handler.go . COPY readconfig.go . COPY readconfig_test.go . COPY requesthandler_test.go . COPY types types COPY version.go . # Run a gofmt and exclude all vendored code. RUN test -z "$(gofmt -l $(find . -type f -name '*.go' -not -path "./vendor/*"))" RUN go test -v ./... # Stripping via -ldflags "-s -w" RUN CGO_ENABLED=0 GOOS=linux go build -a -ldflags "-s -w \ -X main.GitCommit=$GIT_COMMIT \ -X main.Version=$VERSION" \ -installsuffix cgo -o watchdog . \ && GOARM=7 GOARCH=arm CGO_ENABLED=0 GOOS=linux go build -a -ldflags "-s -w \ -X main.GitCommit=$GIT_COMMIT \ -X main.Version=$VERSION" \ -installsuffix cgo -o watchdog-armhf . \ && GOARCH=arm64 CGO_ENABLED=0 GOOS=linux go build -a -ldflags "-s -w \ -X main.GitCommit=$GIT_COMMIT \ -X main.Version=$VERSION" \ -installsuffix cgo -o watchdog-arm64 . \ && GOOS=windows CGO_ENABLED=0 go build -a -ldflags "-s -w \ -X main.GitCommit=$GIT_COMMIT \ -X main.Version=$VERSION" \ -installsuffix cgo -o watchdog.exe .