|
1 | 1 | # Build stage
|
| 2 | +# syntax = docker/dockerfile:1.4.2@sha256:443aab4ca21183e069e7d8b2dc68006594f40bddf1b15bbd83f5137bd93e80e2 |
2 | 3 | ARG goversion
|
3 |
| -FROM cgr.dev/chainguard/go:${goversion}-r0 as builder |
| 4 | +FROM --platform=${BUILDPLATFORM} golang:${goversion}-alpine as builder |
| 5 | +ARG TARGETPLATFORM |
| 6 | +RUN apk add build-base curl git mercurial |
4 | 7 | WORKDIR /spire
|
5 | 8 | ENV CGO_ENABLED=1
|
6 |
| -ADD go.mod go.mod |
7 |
| -RUN go mod download |
8 |
| -ADD . . |
9 |
| -RUN go build -ldflags '-s -w -linkmode external -extldflags "-static"' -o ./bin/spire-server ./cmd/spire-server |
10 |
| -RUN go build -ldflags '-s -w -linkmode external -extldflags "-static"' -o ./bin/spire-agent ./cmd/spire-agent |
11 |
| -RUN go build -ldflags '-s -w -linkmode external -extldflags "-static"' -o ./bin/k8s-workload-registrar ./support/k8s/k8s-workload-registrar |
12 |
| -RUN go build -ldflags '-s -w -linkmode external -extldflags "-static"' -o ./bin/oidc-discovery-provider ./support/oidc-discovery-provider |
| 9 | +COPY go.* . |
| 10 | +# https://go.dev/ref/mod#module-cache |
| 11 | +RUN --mount=type=cache,target=/go/pkg/mod go mod download |
| 12 | +# 📥 Install xcputranslate for your build architecture |
| 13 | +COPY --from=qmcgaw/xcputranslate:v0.8.0 /xcputranslate /usr/local/bin/xcputranslate |
| 14 | +RUN --mount=type=bind,target=.,rw \ |
| 15 | + --mount=type=cache,target=/root/.cache/go-build \ |
| 16 | + --mount=type=cache,target=/go/pkg/mod \ |
| 17 | + GOARCH="$(xcputranslate translate -targetplatform ${TARGETPLATFORM} -language golang -field arch)" \ |
| 18 | + GOARM="$(xcputranslate translate -targetplatform ${TARGETPLATFORM} -language golang -field arm)" \ |
| 19 | + make build-static |
13 | 20 |
|
14 | 21 | # SPIRE Server
|
15 |
| -FROM cgr.dev/chainguard/static:latest AS spire-server-static |
| 22 | +FROM --platform=${BUILDPLATFORM} cgr.dev/chainguard/static:latest AS spire-server-static |
16 | 23 | WORKDIR /opt/spire
|
17 | 24 | COPY --from=builder /spire/bin/spire-server bin/spire-server
|
18 | 25 | ENTRYPOINT ["/opt/spire/bin/spire-server", "run"]
|
19 | 26 | CMD []
|
20 | 27 |
|
21 |
| -FROM cgr.dev/chainguard/static:latest AS spire-agent-static |
| 28 | +FROM --platform=${BUILDPLATFORM} cgr.dev/chainguard/static:latest AS spire-agent-static |
22 | 29 | WORKDIR /opt/spire
|
23 | 30 | COPY --from=builder /spire/bin/spire-agent bin/spire-agent
|
24 | 31 | EXPOSE 8080 8443
|
25 | 32 | ENTRYPOINT ["/opt/spire/bin/spire-agent", "run"]
|
26 | 33 | CMD []
|
27 | 34 |
|
28 | 35 | # K8S Workload Registrar
|
29 |
| -FROM cgr.dev/chainguard/static:latest AS k8s-workload-registrar-static |
| 36 | +FROM --platform=${BUILDPLATFORM} cgr.dev/chainguard/static:latest AS k8s-workload-registrar-static |
30 | 37 | WORKDIR /opt/spire
|
31 | 38 | COPY --from=builder /spire/bin/k8s-workload-registrar bin/k8s-workload-registrar
|
32 | 39 | ENTRYPOINT ["/opt/spire/bin/k8s-workload-registrar"]
|
33 | 40 | CMD []
|
34 | 41 |
|
35 | 42 | # OIDC Discovery Provider
|
36 |
| -FROM cgr.dev/chainguard/static:latest AS oidc-discovery-provider-static |
| 43 | +FROM --platform=${BUILDPLATFORM} cgr.dev/chainguard/static:latest AS oidc-discovery-provider-static |
37 | 44 | WORKDIR /opt/spire
|
38 | 45 | COPY --from=builder /spire/bin/oidc-discovery-provider bin/oidc-discovery-provider
|
39 | 46 | ENTRYPOINT ["/opt/spire/bin/oidc-discovery-provider"]
|
|
0 commit comments