# Builder ######### FROM golang:1.11 AS build RUN apt-get update && apt-get install -y \ zip # required for generate-index.bash # Check out the desired version of Go, both to build the godoc binary and serve # as the goroot for content serving. ARG GO_REF RUN test -n "$GO_REF" # GO_REF is required. RUN git clone --single-branch --depth=1 -b $GO_REF https://go.googlesource.com/go /goroot RUN cd /goroot/src && ./make.bash ENV GOROOT /goroot ENV PATH=/goroot/bin:$PATH RUN go version RUN go get -v -d \ golang.org/x/net/context \ google.golang.org/appengine \ cloud.google.com/go/datastore \ golang.org/x/build \ github.com/gomodule/redigo/redis COPY . /go/src/golang.org/x/tools WORKDIR /go/src/golang.org/x/tools/cmd/godoc RUN GODOC_DOCSET=/goroot ./generate-index.bash RUN go build -o /godoc -tags=golangorg golang.org/x/tools/cmd/godoc # Clean up goroot for the final image. RUN cd /goroot && git clean -xdf # Add build metadata. RUN cd /goroot && echo "go repo HEAD: $(git rev-parse HEAD)" >> /goroot/buildinfo RUN echo "requested go ref: ${GO_REF}" >> /goroot/buildinfo ARG TOOLS_HEAD RUN echo "x/tools HEAD: ${TOOLS_HEAD}" >> /goroot/buildinfo ARG TOOLS_CLEAN RUN echo "x/tools clean: ${TOOLS_CLEAN}" >> /goroot/buildinfo ARG DOCKER_TAG RUN echo "image: ${DOCKER_TAG}" >> /goroot/buildinfo ARG BUILD_ENV RUN echo "build env: ${BUILD_ENV}" >> /goroot/buildinfo RUN rm -rf /goroot/.git # Final image ############# FROM gcr.io/distroless/base WORKDIR /app COPY --from=build /godoc /app/ COPY --from=build /go/src/golang.org/x/tools/cmd/godoc/hg-git-mapping.bin /app/ COPY --from=build /goroot /goroot ENV GOROOT /goroot COPY --from=build /go/src/golang.org/x/tools/cmd/godoc/index.split.* /app/ ENV GODOC_INDEX_GLOB index.split.* CMD ["/app/godoc"]