From cb3fb9292530bfdf46c47dde46139ef8b41b4428 Mon Sep 17 00:00:00 2001 From: rongxin Date: Wed, 9 Apr 2025 08:24:00 +0800 Subject: [PATCH] chore: build multi-arch image --- Dockerfile | 5 ++++- Makefile | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 303ce963f..7b0a6be7f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,10 +16,13 @@ RUN apt update \ && apt autoremove -y wget FROM gcr.io/distroless/cc-debian12:${BASE_IMAGE_TAG} + +ARG TARGETARCH + WORKDIR /app COPY --from=deps /bin/adc /bin/adc -COPY ./bin/api7-ingress-controller . +COPY ./bin/api7-ingress-controller_${TARGETARCH} ./api7-ingress-controller COPY ./config/samples/config.yaml ./conf/config.yaml ENTRYPOINT ["/app/api7-ingress-controller"] diff --git a/Makefile b/Makefile index dce3fac12..3dada9b39 100644 --- a/Makefile +++ b/Makefile @@ -156,7 +156,7 @@ pull-infra-images: .PHONY: build build: manifests generate fmt vet ## Build manager binary. - GOOS=$(GOOS) GOARCH=$(GOARCH) CGO_ENABLED=0 go build -o bin/api7-ingress-controller -ldflags $(GO_LDFLAGS) cmd/main.go + GOOS=$(GOOS) GOARCH=$(GOARCH) CGO_ENABLED=0 go build -o bin/api7-ingress-controller_$(GOARCH) -ldflags $(GO_LDFLAGS) cmd/main.go linux-build: GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -o bin/api7-ingress-controller -ldflags $(GO_LDFLAGS) cmd/main.go @@ -164,6 +164,20 @@ linux-build: .PHONY: build-image build-image: docker-build +.PHONY: build-multi-arch +build-multi-arch: + @CGO_ENABLED=0 GOARCH=amd64 go build -o bin/api7-ingress-controller_amd64 -ldflags $(GO_LDFLAGS) cmd/main.go + @CGO_ENABLED=0 GOARCH=arm64 go build -o bin/api7-ingress-controller_arm64 -ldflags $(GO_LDFLAGS) cmd/main.go + +.PHONY: build-multi-arch-image +build-multi-arch-image: build-multi-arch + # daemon.json: "features":{"containerd-snapshotter": true} + @docker buildx build --load --platform linux/amd64,linux/arm64 -t $(IMG) . + +.PHONY: build-push-multi-arch-image +build-push-multi-arch-image: build-multi-arch + @docker buildx build --push --platform linux/amd64,linux/arm64 -t $(IMG) . + .PHONY: run run: manifests generate fmt vet ## Run a controller from your host. go run ./cmd/main.go