# syntax=docker/dockerfile:1 ARG BUILDPLATFORM FROM --platform=$BUILDPLATFORM golang:1.24-bookworm AS build WORKDIR /src ARG TARGETARCH RUN apt-get update \ && apt-get install -y --no-install-recommends gcc-aarch64-linux-gnu libc6-dev-arm64-cross \ && rm -rf /var/lib/apt/lists/* COPY go.mod go.sum ./ RUN go mod download COPY . . RUN targetarch="${TARGETARCH:-amd64}" \ && echo "building for TARGETARCH=${targetarch}" \ && case "$targetarch" in \ amd64) export CC=gcc ;; \ arm64) export CC=aarch64-linux-gnu-gcc ;; \ *) echo "unsupported TARGETARCH=${targetarch}" >&2; exit 1 ;; \ esac \ && CGO_ENABLED=1 GOOS=linux GOARCH="$targetarch" go build -o /out/archi-folio ./cmd/server FROM gcr.io/distroless/cc-debian12:nonroot WORKDIR /app COPY --from=build /out/archi-folio /usr/local/bin/archi-folio COPY --chown=nonroot:nonroot web ./web COPY --chown=nonroot:nonroot VERSION ./VERSION COPY --chown=nonroot:nonroot data/uploads/.gitkeep ./data/uploads/.gitkeep EXPOSE 8080 CMD ["/usr/local/bin/archi-folio"]