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