# ---- build stage ----
FROM golang:1.25-alpine AS build
WORKDIR /src

# Git CA certs (for go modules / HTTPS)
RUN apk add --no-cache ca-certificates

# Copy mod files first for better caching
COPY go.mod go.sum ./
RUN go mod download

# Copy the rest of the source
COPY . .

ARG BUILD_TIME=""
ARG GIT_COMMIT="unknown"
ARG VERSION="dev"

# Build a static-ish binary (alpine musl)
RUN BUILD_TIME="${BUILD_TIME:-$(date -u +%Y-%m-%dT%H:%M:%SZ)}" && \
    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
    go build -trimpath \
      -ldflags="-s -w -X main.buildTime=${BUILD_TIME} -X main.gitCommit=${GIT_COMMIT} -X main.version=${VERSION}" \
      -o /out/ingestd ./cmd/ingestd

# ---- runtime stage ----
FROM alpine:3.22
WORKDIR /app

RUN apk add --no-cache ca-certificates && \
    adduser -D -H -u 10001 appuser

# Copy binary + schema file used at startup
COPY --from=build /out/ingestd /app/ingestd

USER appuser

# Web UI
EXPOSE 8080

# default config path inside container
ENTRYPOINT ["/app/ingestd"]
CMD ["-config", "/app/config.yaml"]
