# syntax=docker/dockerfile:1.7 ARG BUILDPLATFORM ARG TARGETPLATFORM FROM --platform=$BUILDPLATFORM golang:1.25-alpine AS payment-package-build ARG TARGETOS ARG TARGETARCH ARG TARGETPLATFORM ARG BUILDPLATFORM ARG GOPROXY=https://proxy.golang.org,direct ENV GOPROXY=$GOPROXY RUN apk add --no-cache nodejs unzip zip WORKDIR /src COPY backend/go.mod backend/go.sum ./backend/ RUN --mount=type=cache,target=/go/pkg/mod cd backend && go mod download COPY backend ./backend COPY plugin-packages ./plugin-packages RUN --mount=type=cache,target=/root/.cache/go-build set -eu; \ test -n "$TARGETOS"; \ test -n "$TARGETARCH"; \ PAYMENT_PLUGIN_GOOS="$TARGETOS" \ PAYMENT_PLUGIN_GOARCH="$TARGETARCH" \ PAYMENT_PLUGIN_CGO_ENABLED=0 \ ./plugin-packages/build-packages.sh --payments-only; \ sh ./plugin-packages/verify-payment-packages.sh "$TARGETOS" "$TARGETARCH" FROM --platform=$TARGETPLATFORM alpine:3.22 AS payment-package-smoke ARG TARGETOS ARG TARGETARCH RUN apk add --no-cache unzip COPY --from=payment-package-build /src/plugin-packages /app/plugin-packages RUN PAYMENT_PLUGIN_SMOKE_TEST=1 \ sh /app/plugin-packages/verify-payment-packages.sh "$TARGETOS" "$TARGETARCH" FROM golang:1.25-alpine AS backend-build ARG GOPROXY=https://proxy.golang.org,direct ARG BUILD_VERSION ARG BUILD_COMMIT=unknown ARG BUILD_TIME=unknown ENV GOPROXY=$GOPROXY RUN apk add --no-cache build-base WORKDIR /src/backend COPY VERSION /src/VERSION COPY backend/go.mod backend/go.sum ./ RUN --mount=type=cache,target=/go/pkg/mod go mod download COPY backend ./ RUN --mount=type=cache,target=/root/.cache/go-build set -eu; \ version="${BUILD_VERSION:-$(tr -d '\r\n' /dev/null || exit 1 CMD ["infinite-canvas-backend"]