22ARG GO_VERSION=1.14.3
33ARG CLI_VERSION=19.03.9
44ARG ALPINE_VERSION=3.12.0
5+ ARG GOLANGCI_LINT_VERSION=v1.27.0-alpine
56
7+ # ###
8+ # BUILDER
9+ # ###
610FROM golang:${GO_VERSION} AS builder
711WORKDIR /go/src/github.com/docker/docker-scan
812
@@ -12,23 +16,57 @@ RUN --mount=type=cache,target=/root/.cache/go-build \
1216 go mod download
1317COPY . .
1418
19+ # ###
20+ # LINT-BASE
21+ # ###
22+ FROM golangci/golangci-lint:${GOLANGCI_LINT_VERSION} AS lint-base
23+
24+ # ###
25+ # LINT
26+ # ###
27+ FROM builder AS lint
28+ ENV CGO_ENABLED=0
29+ COPY --from=lint-base /usr/bin/golangci-lint /usr/bin/golangci-lint
30+ RUN --mount=target=. \
31+ --mount=type=cache,target=/root/.cache/go-build \
32+ --mount=type=cache,target=/root/.cache/golangci-lint \
33+ make linter
34+
35+ # ###
36+ # BUILD
37+ # ###
1538FROM builder AS build
1639RUN --mount=target=. \
1740 --mount=type=cache,target=/root/.cache/go-build \
1841 make build
1942
43+ # ###
44+ # SCAN
45+ # ###
2046FROM scratch AS scan
2147COPY --from=build /go/src/github.com/docker/docker-scan/bin/docker-scan /docker-scan
2248
49+ # ###
50+ # CROSS_BUILD
51+ # ###
2352FROM builder AS cross-build
2453RUN --mount=type=cache,target=/root/.cache/go-build \
2554 make dist
2655
56+ # ###
57+ # CROSS
58+ # ###
2759FROM scratch AS cross
2860COPY --from=cross-build /go/src/github.com/docker/docker-scan/dist /
2961
62+ # ###
63+ # CLI
64+ # ###
3065FROM docker:${CLI_VERSION} AS cli
3166
67+ # ###
68+ # SNYK
69+ # ###
3270FROM alpine:${ALPINE_VERSION} AS snyk
3371ARG SNYK_DESKTOP_VERSION=1.332.0
3472ARG SNYK_USER_VERSION=1.334.0
@@ -40,6 +78,9 @@ RUN wget https://github.com/snyk/snyk/releases/download/v${SNYK_DESKTOP_VERSION}
4078# install snyk user binary
4179RUN wget https://github.com/snyk/snyk/releases/download/v${SNYK_USER_VERSION}/snyk-linux -O snyk-user
4280
81+ # ###
82+ # E2E
83+ # ###
4384FROM builder AS e2e
4485ARG SNYK_DESKTOP_VERSION=1.332.0
4586ENV SNYK_DESKTOP_VERSION=${SNYK_DESKTOP_VERSION}
0 commit comments