Files
dbbackup/Dockerfile
renz b206441a4a 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
2025-12-13 09:45:25 +00:00

63 lines
1.5 KiB
Docker

# Multi-stage build for minimal image size
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
WORKDIR /build
# Copy go mod files
COPY go.mod go.sum ./
RUN go mod download
# Copy source code
COPY . .
# 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
# 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 && \
adduser -D -u 1000 -G dbbackup dbbackup
# Copy binary from builder
COPY --from=builder /build/dbbackup /usr/local/bin/dbbackup
RUN chmod +x /usr/local/bin/dbbackup
# Create backup directory
RUN mkdir -p /backups && chown dbbackup:dbbackup /backups
# Set working directory
WORKDIR /backups
# Switch to non-root user
USER dbbackup
# Set entrypoint
ENTRYPOINT ["/usr/local/bin/dbbackup"]
# Default command shows help
CMD ["--help"]
# Labels
LABEL maintainer="UUXO"
LABEL version="1.0"
LABEL description="Professional database backup tool for PostgreSQL, MySQL, and MariaDB"