From bcdc2c9c9aff22db9e2b7f31fe31c955f0197cfc Mon Sep 17 00:00:00 2001 From: Julio Pasinatto Date: Mon, 8 Jun 2026 14:19:37 -0300 Subject: [PATCH 1/2] K8SPSMDB-1213 Add support for arm image --- Makefile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 7342c047..47de6dce 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,7 @@ SHELL = /bin/bash GIT_BRANCH:=$(shell git rev-parse --abbrev-ref HEAD | sed -e 's^/^-^g; s^[.]^-^g;' | tr '[:upper:]' '[:lower:]') GIT_COMMIT:=$(shell git rev-parse --short HEAD) IMG ?= perconalab/version-service:$(GIT_BRANCH)-$(GIT_COMMIT) +PLATFORMS ?= linux/amd64,linux/arm64 init: go build -modfile=tools/go.mod -o bin/yq github.com/mikefarah/yq/v3 @@ -53,9 +54,9 @@ build: run: build SERVE_HTTP=true ./bin/app -# Build and push docker image -docker-push: docker-build - docker push ${IMG} +# Build and push multi-arch docker image +docker-push: + docker buildx build --platform=$(PLATFORMS) -t ${IMG} $(if $(IMG_LATEST),-t $(IMG_LATEST)) --push . test: docker-compose -f docker-compose.test.yml up --build --abort-on-container-exit From 6c3dfd01b3c391ed944be0984bcc9ed7489244bd Mon Sep 17 00:00:00 2001 From: Julio Pasinatto Date: Mon, 8 Jun 2026 18:10:25 -0300 Subject: [PATCH 2/2] make Dockerfile and Dockerfile.test support multiplatform --- Dockerfile | 9 ++++----- Dockerfile.test | 4 +--- Makefile | 9 ++++++++- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index da76e751..aaeb015f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,12 @@ -FROM golang:1.25 AS build-env +FROM --platform=$BUILDPLATFORM golang:1.25 AS build-env +ARG TARGETOS +ARG TARGETARCH ADD . /src -ENV CGO_ENABLED=0 -ENV GOOS=linux -ENV GOARCH=amd64 WORKDIR /src RUN go mod download RUN make init RUN make gen -RUN go build -o /app +RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH:-amd64} go build -o /app FROM scratch COPY --from=build-env /app / diff --git a/Dockerfile.test b/Dockerfile.test index 3e875f8c..1c29a758 100644 --- a/Dockerfile.test +++ b/Dockerfile.test @@ -1,8 +1,6 @@ -FROM --platform=linux/amd64 golang:1.25 +FROM golang:1.25 ADD . /src ENV CGO_ENABLED=1 -ENV GOOS=linux -ENV GOARCH=amd64 ENV VS_HOST="" WORKDIR /src RUN make init diff --git a/Makefile b/Makefile index 47de6dce..776a4398 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,7 @@ IMG ?= perconalab/version-service:$(GIT_BRANCH)-$(GIT_COMMIT) PLATFORMS ?= linux/amd64,linux/arm64 init: + mkdir -p bin go build -modfile=tools/go.mod -o bin/yq github.com/mikefarah/yq/v3 go build -modfile=tools/go.mod -o bin/protoc-gen-go google.golang.org/protobuf/cmd/protoc-gen-go go build -modfile=tools/go.mod -o bin/protoc-gen-go-grpc google.golang.org/grpc/cmd/protoc-gen-go-grpc @@ -15,7 +16,13 @@ init: curl -L "https://github.com/bufbuild/buf/releases/download/v1.34.0/buf-$(shell uname -s)-$(shell uname -m)" -o "./bin/buf" chmod +x ./bin/buf - curl -L https://github.com/go-swagger/go-swagger/releases/download/v0.31.0/swagger_$(shell uname | tr '[:upper:]' '[:lower:]')_amd64 -o ./bin/swagger + SWAGGER_ARCH=$$(uname -m); \ + case "$${SWAGGER_ARCH}" in \ + x86_64) SWAGGER_ARCH=amd64 ;; \ + aarch64|arm64) SWAGGER_ARCH=arm64 ;; \ + *) echo "unsupported swagger architecture: $${SWAGGER_ARCH}"; exit 1 ;; \ + esac; \ + curl -L "https://github.com/go-swagger/go-swagger/releases/download/v0.31.0/swagger_$(shell uname | tr '[:upper:]' '[:lower:]')_$${SWAGGER_ARCH}" -o ./bin/swagger chmod +x ./bin/swagger gen: