# 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"]
