From b206441a4aaac164861bccac7557b13a3553ef87 Mon Sep 17 00:00:00 2001 From: renz Date: Sat, 13 Dec 2025 09:45:25 +0000 Subject: [PATCH] fix: Add cross-compilation and fix QEMU ARM64 compatibility - Added --platform=$BUILDPLATFORM to builder stage for cross-compilation - Added TARGETOS and TARGETARCH build args - Pinned Alpine to 3.19 for better QEMU emulation stability - Split apk add commands to prevent trigger failures under QEMU - Fixes ARM64 build failures in CI/CD pipeline --- Dockerfile | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9fcaf3b..142218e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,9 @@ # Multi-stage build for minimal image size -FROM golang:1.24-alpine AS builder +FROM --platform=$BUILDPLATFORM golang:1.24-alpine AS builder + +# Build arguments for cross-compilation +ARG TARGETOS +ARG TARGETARCH # Install build dependencies RUN apk add --no-cache git make @@ -13,21 +17,21 @@ RUN go mod download # Copy source code COPY . . -# Build binary -RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags="-w -s" -o dbbackup . +# Build binary with cross-compilation support +RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \ + go build -a -installsuffix cgo -ldflags="-w -s" -o dbbackup . # Final stage - minimal runtime image +# Using pinned version 3.19 which has better QEMU compatibility FROM alpine:3.19 # Install database client tools -RUN apk add --no-cache \ - postgresql-client \ - mysql-client \ - mariadb-client \ - pigz \ - pv \ - ca-certificates \ - tzdata +# Split into separate commands for better QEMU compatibility +RUN apk add --no-cache postgresql-client +RUN apk add --no-cache mysql-client +RUN apk add --no-cache mariadb-client +RUN apk add --no-cache pigz pv +RUN apk add --no-cache ca-certificates tzdata # Create non-root user RUN addgroup -g 1000 dbbackup && \