Split go build in Dockerfile

To maximize the usage of cache, split the govendor get in steps:
- govendor fetch to get the pinned versions of dependencies
- go install to actually build the binary

Doing so allows not to re-download the whole dependencies when changing
lines in hugo repository

The current Dockerfile generates an image of 16.6MB

Signed-off-by: Thibault Jamet <tjamet@users.noreply.github.com>
This commit is contained in:
Thibault Jamet 2017-09-07 15:17:44 +02:00 committed by Anthony Fok
parent 09d960f173
commit d9697e275e
1 changed files with 4 additions and 2 deletions

View File

@ -2,9 +2,11 @@ FROM golang:1.9.0-alpine3.6 AS build
RUN apk add --no-cache --virtual git musl-dev
RUN go get github.com/kardianos/govendor
RUN govendor get github.com/gohugoio/hugo
ADD vendor/vendor.json /go/src/github.com/gohugoio/hugo/vendor/vendor.json
WORKDIR /go/src/github.com/gohugoio/hugo
RUN rm -f $GOPATH/bin/hugo
RUN govendor sync
ADD . /go/src/github.com/gohugoio/hugo/
RUN go install -ldflags '-s -w'
FROM alpine:3.6