From 09d960f17396eb7fd2c8fe6527db9503d59f0b4f Mon Sep 17 00:00:00 2001 From: Thibault Jamet Date: Thu, 7 Sep 2017 15:08:56 +0200 Subject: [PATCH] Update Dockerfile to benefit build cache Docker has recently introduces buikld-stages (as of version 17.05) Build stages allows to benefit the docker build cache as well as reducing the size of the resulting image c.f. https://docs.docker.com/engine/userguide/eng-image/multistage-build/ This change allows to have faster builds when running `docker build` several times after changing some little code Signed-off-by: Thibault Jamet --- Dockerfile | 34 +++++++++++----------------------- 1 file changed, 11 insertions(+), 23 deletions(-) diff --git a/Dockerfile b/Dockerfile index f8ec73a86..ca165a986 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,18 @@ +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 +WORKDIR /go/src/github.com/gohugoio/hugo +RUN rm -f $GOPATH/bin/hugo +RUN go install -ldflags '-s -w' + FROM alpine:3.6 - -ENV GOPATH /go -ENV PATH $GOPATH/bin:$PATH - RUN \ adduser -h /site -s /sbin/nologin -u 1000 -D hugo && \ apk add --no-cache \ - dumb-init && \ - apk add --no-cache --virtual .build-deps \ - gcc \ - musl-dev \ - go \ - git && \ - mkdir -p \ - ${GOPATH}/bin \ - ${GOPATH}/pkg \ - ${GOPATH}/src && \ - go get github.com/kardianos/govendor && \ - govendor get github.com/gohugoio/hugo && \ - cd $GOPATH/src/github.com/gohugoio/hugo && \ - rm -f $GOPATH/bin/hugo && \ - go install -ldflags '-s -w' && \ - cd $GOPATH && \ - rm -rf pkg src .cache bin/govendor && \ - apk del .build-deps - + dumb-init +COPY --from=build /go/bin/hugo /bin/hugo USER hugo WORKDIR /site VOLUME /site