FROM golang:1.26-alpine AS builder

WORKDIR /app

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

COPY . .

# All dependencies (pgx, the SQLite importer) are pure Go, so build a static binary
ENV CGO_ENABLED=0

RUN go build -trimpath -ldflags="-s -w" -o app ./cmd/server

FROM alpine:3.22

WORKDIR /app

RUN apk add --no-cache ca-certificates tzdata \
    && adduser -D appuser \
    && mkdir -p /app/uploads /app/tmp /app/data \
    && chown -R appuser:appuser /app

COPY --from=builder /app/app .

USER appuser

ENV GIN_MODE=release

EXPOSE 3000

CMD ["./app"]
