# syntax=docker/dockerfile:1.7

# ---------- build ----------
FROM golang:1.23-alpine3.20 AS build

ENV CGO_ENABLED=0 \
    GOOS=linux \
    GOFLAGS="-trimpath"

WORKDIR /src

# Pre-cache module metadata before copying sources.
COPY services/verification-service/go.mod ./services/verification-service/
RUN --mount=type=cache,target=/root/.cache/go-build \
    --mount=type=cache,target=/go/pkg/mod \
    cd services/verification-service && go mod download

COPY services/verification-service/ ./services/verification-service/

WORKDIR /src/services/verification-service
RUN --mount=type=cache,target=/root/.cache/go-build \
    --mount=type=cache,target=/go/pkg/mod \
    go vet ./... && \
    go test ./... && \
    go build -ldflags="-s -w" -o /out/verification-service ./cmd/verification-service

# ---------- runtime ----------
FROM gcr.io/distroless/static-debian12:nonroot

COPY --from=build /out/verification-service /verification-service

USER 65532:65532
EXPOSE 8084
ENTRYPOINT ["/verification-service"]
CMD ["-listen=:8084", "-backend=memory"]
