fix(build): speed up docker builds

Copy only what's needed rather then entire repo, needs more steps but allows for faster builds
This commit is contained in:
Łukasz Mierzwa
2019-09-26 22:02:41 +01:00
parent 29de0fa63c
commit e1dad3b78e
3 changed files with 27 additions and 7 deletions

View File

@@ -1,12 +1,20 @@
FROM node:10.16.3-alpine as nodejs-builder
RUN apk add --update make git
COPY . /src
COPY Makefile /src/Makefile
COPY ui /src/ui
RUN make -C /src ui
FROM golang:1.13.1-alpine as go-builder
COPY --from=nodejs-builder /src /src
ARG VERSION
RUN apk add --update make git
COPY Makefile /src/Makefile
COPY go.mod /src/go.mod
COPY go.sum /src/go.sum
RUN make -C /src download-deps
COPY --from=nodejs-builder /src/ui /src/ui
COPY --from=nodejs-builder /src/.build /src/.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

View File

@@ -1,5 +1,5 @@
NAME := karma
VERSION := $(shell git describe --tags --always --dirty='-dev')
VERSION ?= $(shell git describe --tags --always --dirty='-dev')
# Alertmanager instance used when running locally, points to mock data
MOCK_PATH := $(CURDIR)/internal/mock/0.15.3
@@ -54,6 +54,10 @@ cmd/karma/bindata_assetfs.go: .build/deps-build-go.ok .build/artifacts-bindata_a
$(NAME): .build/deps-build-go.ok go.mod cmd/karma/bindata_assetfs.go $(SOURCES)
GO111MODULE=on go build -ldflags "-X main.version=$(VERSION)" ./cmd/karma
.PHONY: download-deps
download-deps:
GO111MODULE=on go mod download
word-split = $(word $2,$(subst -, ,$1))
cc-%: .build/deps-build-go.ok go.mod cmd/karma/bindata_assetfs.go $(SOURCES)
$(eval GOOS := $(call word-split,$*,1))

View File

@@ -1,12 +1,20 @@
FROM node:10.16.3-alpine as nodejs-builder
RUN apk add --update make git
COPY . /src
COPY Makefile /src/Makefile
COPY ui /src/ui
RUN make -C /src ui
FROM golang:1.13.1-alpine as go-builder
COPY --from=nodejs-builder /src /src
ARG VERSION
RUN apk add --update make git
COPY Makefile /src/Makefile
COPY go.mod /src/go.mod
COPY go.sum /src/go.sum
RUN make -C /src download-deps
COPY --from=nodejs-builder /src/ui /src/ui
COPY --from=nodejs-builder /src/.build /src/.build
COPY cmd /src/cmd
COPY internal /src/internal
ARG VERSION
RUN CGO_ENABLED=0 make -C /src VERSION="${VERSION:-dev}" karma
FROM alpine:3.10