Skip to content

Commit c1e6f86

Browse files
authored
Merge pull request #409 from fenollp/moar-dockerfile
add Dockerfile target to build from source
2 parents f3ac855 + e1e0907 commit c1e6f86

File tree

2 files changed

+49
-14
lines changed

2 files changed

+49
-14
lines changed

Dockerfile

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,32 @@
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

631
FROM alpine AS osmap-linux
732
RUN echo linux >/os
@@ -13,18 +38,22 @@ FROM osmap-$TARGETOS AS osmap
1338

1439
FROM alpine AS fetcher
1540
WORKDIR /app
41+
ARG VERSION
1642
RUN \
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

2958
FROM scratch AS ghz-binary
3059
COPY --from=fetcher /app/exe/* /

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ go build .
5959
go install github.com/bojand/ghz/cmd/ghz@latest
6060
```
6161

62+
**Install using Docker**
63+
64+
```sh
65+
DOCKER_BUILDKIT=1 docker build --output=/usr/local/bin --target=ghz-binary-built https://github.com/bojand/ghz.git
66+
```
67+
6268
## Usage
6369

6470
```

0 commit comments

Comments
 (0)