Skip to content

Commit

Permalink
Use tonistiigi/xx for cross-platform builds
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
darkowlzz committed Oct 13, 2021
1 parent 7eac4bd commit d97127e
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 3 deletions.
14 changes: 12 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -18,7 +27,8 @@ COPY controllers/ controllers/
COPY internal/ internal/

# build
RUN CGO_ENABLED=0 go build -a -o notification-controller main.go
ENV CGO_ENABLED=0
RUN xx-go build -a -o notification-controller main.go

FROM alpine:3.13

Expand Down
11 changes: 10 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,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

all: manager

# Run tests
Expand Down Expand Up @@ -82,7 +87,11 @@ generate: controller-gen

# Build the docker image
docker-build: test
docker build . -t ${IMG}
docker buildx build \
--platform=$(BUILD_PLATFORMS) \
-t ${IMG} \
--load \
${BUILD_ARGS} .

# Push the docker image
docker-push:
Expand Down

0 comments on commit d97127e

Please sign in to comment.