Skip to content

Commit

Permalink
build: add xx to cross-compile binaries in Docker
Browse files Browse the repository at this point in the history
Signed-off-by: Mark Sagi-Kazar <mark.sagikazar@gmail.com>
  • Loading branch information
sagikazarmark committed Apr 13, 2023
1 parent 28aaa8f commit 99c06f2
Showing 1 changed file with 19 additions and 9 deletions.
28 changes: 19 additions & 9 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,19 +1,29 @@
ARG BASE_IMAGE=alpine

FROM golang:1.20.3-alpine3.16 AS builder
FROM --platform=$BUILDPLATFORM tonistiigi/xx AS xx

WORKDIR /usr/local/src/dex
FROM --platform=$BUILDPLATFORM golang:1.20.3-alpine3.16 AS builder

RUN apk add --no-cache --update alpine-sdk ca-certificates openssl
RUN apk add --no-cache --update alpine-sdk ca-certificates openssl clang lld

ARG TARGETOS
ARG TARGETARCH
ARG TARGETVARIANT=""
COPY --from=xx / /

ARG TARGETPLATFORM

RUN xx-go --wrap

ENV GOOS=${TARGETOS} GOARCH=${TARGETARCH} GOARM=${TARGETVARIANT}
# gcc is only installed for libgcc
RUN xx-apk --update --no-cache add musl-dev gcc

# lld has issues building static binaries for ppc so prefer ld for it
RUN [ "$(xx-info arch)" != "ppc64le" ] || XX_CC_PREFER_LINKER=ld xx-clang --setup-target-triple

WORKDIR /usr/local/src/dex

ARG GOPROXY

ENV CGO_ENABLED=1

COPY go.mod go.sum ./
COPY api/v2/go.mod api/v2/go.sum ./api/v2/
RUN go mod download
Expand All @@ -37,8 +47,8 @@ ARG TARGETVARIANT
ENV GOMPLATE_VERSION=v3.11.4

RUN wget -O /usr/local/bin/gomplate \
"https://github.com/hairyhenderson/gomplate/releases/download/${GOMPLATE_VERSION}/gomplate_${TARGETOS:-linux}-${TARGETARCH:-amd64}${TARGETVARIANT}" \
&& chmod +x /usr/local/bin/gomplate
"https://github.com/hairyhenderson/gomplate/releases/download/${GOMPLATE_VERSION}/gomplate_${TARGETOS:-linux}-${TARGETARCH:-amd64}${TARGETVARIANT}" \
&& chmod +x /usr/local/bin/gomplate

# For Dependabot to detect base image versions
FROM alpine:3.17.3 AS alpine
Expand Down

0 comments on commit 99c06f2

Please sign in to comment.