FROM golang:1.10-alpine as builder
RUN apk add --no-cache ca-certificates git
WORKDIR /go/src/frontend

# fetch known dependencies for caching
RUN go get -d github.com/google/uuid \
    github.com/gorilla/mux \
    github.com/pkg/errors \
    github.com/sirupsen/logrus \
    google.golang.org/grpc \
    google.golang.org/grpc/codes \
    google.golang.org/grpc/status

# copy go-only part of the build
COPY *.go ./
COPY ./genproto ./genproto
COPY ./money    ./money

# fetch other dependencies might not have listed above (ideally noop)
RUN go get -d ./...
RUN go install .

# ---

FROM alpine as release
RUN apk add --no-cache ca-certificates \
    busybox-extras net-tools bind-tools
WORKDIR /frontend
COPY --from=builder /go/bin/frontend /frontend/server
COPY ./templates ./templates
COPY ./static ./static
EXPOSE 8080
ENTRYPOINT ["/frontend/server"]
