# Admin dashboard (React) - built once, embedded into the Go binary via go:embed.
FROM --platform=$BUILDPLATFORM node:22-bookworm-slim AS ui

WORKDIR /web

COPY web/package.json web/package-lock.json ./
RUN npm ci

COPY web/ ./
RUN npm run build

FROM golang:1.25-bookworm AS builder

WORKDIR /app

# Required for CGO build (sqlite driver).
RUN apt-get update \
    && apt-get install -y --no-install-recommends build-essential ca-certificates \
    && rm -rf /var/lib/apt/lists/*

COPY go.mod go.sum ./
RUN go mod download

COPY . .
COPY --from=ui /web/dist ./web/dist

ARG GIT_SHA=""
RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w -X main.buildCommit=${GIT_SHA}" -o /out/reforger_crawler_main .

FROM debian:bookworm-slim AS runtime

WORKDIR /app

RUN apt-get update \
    && apt-get install -y --no-install-recommends ca-certificates tzdata \
    && rm -rf /var/lib/apt/lists/*

COPY --from=builder /out/reforger_crawler_main /app/reforger_crawler_main

# Configuration comes from environment variables (see .env.dokploy.example).
# Mount a config.yaml into /app if you prefer a file.

EXPOSE 8083

ENTRYPOINT ["/app/reforger_crawler_main"]
