Use tonistiigi/xx for cross-platform builds
Update the Dockerfile to use tonistiigi/xx to cross-compile the manager binaries natively and speed up the multi-arch image build time. Signed-off-by: Sunny <darkowlzz@protonmail.com>
This commit is contained in:
parent
32a79a956e
commit
2193b6350b
14
Dockerfile
14
Dockerfile
|
@ -1,4 +1,13 @@
|
|||
FROM golang:1.16-alpine as builder
|
||||
ARG XX_VERSION=1.0.0-rc.2
|
||||
|
||||
FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx
|
||||
|
||||
FROM --platform=$BUILDPLATFORM golang:1.16-alpine as builder
|
||||
|
||||
# Copy the build utilities.
|
||||
COPY --from=xx / /
|
||||
|
||||
ARG TARGETPLATFORM
|
||||
|
||||
WORKDIR /workspace
|
||||
|
||||
|
@ -18,7 +27,8 @@ COPY controllers/ controllers/
|
|||
COPY internal/ internal/
|
||||
|
||||
# build
|
||||
RUN CGO_ENABLED=0 go build -a -o kustomize-controller main.go
|
||||
ENV CGO_ENABLED=0
|
||||
RUN xx-go build -a -o kustomize-controller main.go
|
||||
|
||||
FROM alpine:3.14
|
||||
|
||||
|
|
10
Makefile
10
Makefile
|
@ -11,6 +11,11 @@ else
|
|||
GOBIN=$(shell go env GOBIN)
|
||||
endif
|
||||
|
||||
# Allows for defining additional Docker buildx arguments, e.g. '--push'.
|
||||
BUILD_ARGS ?=
|
||||
# Architectures to build images for.
|
||||
BUILD_PLATFORMS ?= linux/amd64,linux/arm64,linux/arm/v7
|
||||
|
||||
all: manager
|
||||
|
||||
# Download the envtest binaries to testbin
|
||||
|
@ -94,7 +99,10 @@ generate: controller-gen
|
|||
|
||||
# Build the docker image
|
||||
docker-build:
|
||||
docker build . -t ${IMG}
|
||||
docker buildx build \
|
||||
--platform=$(BUILD_PLATFORMS) \
|
||||
-t ${IMG} \
|
||||
${BUILD_ARGS} .
|
||||
|
||||
# Push the docker image
|
||||
docker-push:
|
||||
|
|
Loading…
Reference in New Issue