Files
karma/Dockerfile
Łukasz Mierzwa 0b724fdd86 fix(build): only install dev dependencies when needed
Right now both nodejs and Go dev dependencies (linters, test tools, etc.) are installed when building binaries.
This slows down everything, especially in CI.
Install nodejs dev deps only when needed by setting NODE_ENV=production during builds.
Install Go dev deps only when needed by splitting go.mod files per tool.
2020-06-25 14:52:22 +01:00

30 lines
846 B
Docker

FROM node:12.18.1-alpine3.12 as nodejs-builder
RUN mkdir -p /src/ui
COPY ui/package.json ui/package-lock.json /src/ui/
ENV NODE_ENV=production
RUN cd /src/ui && npm install
RUN apk add make git
COPY ui /src/ui
RUN make -C /src/ui build
FROM golang:1.14.4-alpine3.12 as go-builder
RUN apk add make git
COPY Makefile /src/Makefile
COPY make /src/make
COPY go.mod /src/go.mod
COPY go.sum /src/go.sum
RUN make -C /src download-deps-go
COPY tools/go-bindata /src/tools/go-bindata
RUN make -C /src install-deps-build-go
COPY --from=nodejs-builder /src/ui/src /src/ui/src
COPY --from=nodejs-builder /src/ui/build /src/ui/build
COPY cmd /src/cmd
COPY internal /src/internal
ARG VERSION
RUN CGO_ENABLED=0 make -C /src VERSION="${VERSION:-dev}" karma
FROM gcr.io/distroless/base
COPY --from=go-builder /src/karma /karma
EXPOSE 8080
ENTRYPOINT ["/karma"]