1- # syntax=docker.io/docker/dockerfile:1@sha256:42399d4635eddd7a9b8a24be879d2f9a930d0ed040a61324cfdf59ef1357b3b2
1+ # syntax=docker.io/docker/dockerfile:1.3-labs@sha256:250ce669e1aeeb5ffb892b18039c3f0801466536cb4210c8eb2638e628859bfd
2+
3+ FROM --platform=$BUILDPLATFORM docker.io/library/alpine:3.17 AS alpine
4+ FROM --platform=$BUILDPLATFORM docker.io/library/golang@sha256:403f48633fb5ebd49f9a2b6ad6719f912df23dae44974a0c9445be331e72ff5e AS golang
5+ FROM --platform=$BUILDPLATFORM gcr.io/distroless/base:nonroot@sha256:e406b1da09bc455495417a809efe48a03c48011a89f6eb57b0ab882508021c0d AS distroless
6+
7+
8+ FROM golang AS builder
9+ WORKDIR /app
10+ ARG TARGETOS TARGETARCH
11+ ENV CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH
12+ COPY go.??? .
13+ RUN \
14+ --mount=type=cache,target=/go/pkg/mod \
15+ --mount=type=cache,target=/root/.cache/go-build <<EOF
16+ set -eux
17+ go mod download
18+ EOF
19+ COPY . .
20+ RUN \
21+ --mount=type=cache,target=/go/pkg/mod \
22+ --mount=type=cache,target=/root/.cache/go-build <<EOF
23+ set -eux
24+ go build -mod=readonly -o ./dist/ghz -a -installsuffix cgo -ldflags '-w -s -extldflags "-static"' ./cmd/ghz/...
25+ EOF
26+
27+ FROM scratch AS ghz-binary-built
28+ COPY --from=builder /app/dist/ghz /
229
3- FROM --platform=$BUILDPLATFORM docker.io/library/alpine:3.16 AS alpine
4- FROM --platform=$BUILDPLATFORM gcr.io/distroless/base:nonroot@sha256:02f667185ccf78dbaaf79376b6904aea6d832638e1314387c2c2932f217ac5cb AS distroless
530
631FROM alpine AS osmap-linux
732RUN echo linux >/os
@@ -13,18 +38,22 @@ FROM osmap-$TARGETOS AS osmap
1338
1439FROM alpine AS fetcher
1540WORKDIR /app
41+ ARG VERSION
1642RUN \
17- --mount=from=osmap,source=/os,target=/os \
18- set -ux \
19- && apk add --no-cache curl \
20- && export url=https://github.com/bojand/ghz/releases \
21- && export arch=x86_64 \
22- && export VERSION=$( ( curl -#fSLo /dev/null -w '%{url_effective}' $url/latest && echo ) | while read -r x; do basename $x; done) \
23- && curl -#fSLo exe.tar.gz $url/download/$VERSION/ghz-$(cat /os)-$arch.tar.gz \
24- && curl -#fSLo sha2 $url/download/$VERSION/ghz-$(cat /os)-$arch.tar.gz.sha256 \
25- && sha256sum exe.tar.gz | grep -F $(cat sha2) \
26- && tar xvf exe.tar.gz \
27- && rm ghz-web* && mkdir exe && mv ghz* exe/
43+ --mount=from=osmap,source=/os,target=/os <<EOF
44+ set -eux
45+ apk add --no-cache curl
46+ export url=https://github.com/bojand/ghz/releases
47+ export arch=x86_64
48+ if [ "${VERSION:-}" = '' ]; then
49+ export VERSION=$( ( curl -#fSLo /dev/null -w '%{url_effective}' $url/latest && echo ) | while read -r x; do basename $x; done)
50+ fi
51+ curl -#fSLo exe.tar.gz $url/download/$VERSION/ghz-$(cat /os)-$arch.tar.gz
52+ curl -#fSLo sha2 $url/download/$VERSION/ghz-$(cat /os)-$arch.tar.gz.sha256
53+ sha256sum exe.tar.gz | grep -F $(cat sha2)
54+ tar xvf exe.tar.gz
55+ rm ghz-web* && mkdir exe && mv ghz* exe/
56+ EOF
2857
2958FROM scratch AS ghz-binary
3059COPY --from=fetcher /app/exe/* /
0 commit comments