FROM golang:1.27.1-alpine AS build
RUN apk add --no-cache gcc musl-dev
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY *.go ./
COPY .dockerignore .env.example .gitignore Dockerfile README.md compose.yaml compose.production.yaml ./
COPY deploy ./deploy
COPY api ./api
COPY web ./web
RUN CGO_ENABLED=1 go build -trimpath -ldflags='-s -w -linkmode external -extldflags "-static"' -o /listingquery .

FROM alpine:3.24
RUN apk add --no-cache ca-certificates && \
    addgroup -g 10001 app && adduser -D -u 10001 -G app app && \
    mkdir /data && chown app:app /data
COPY --from=build /listingquery /usr/local/bin/listingquery
USER 10001:10001
ENV DB_PATH=/data/listings.sqlite LISTEN_ADDR=:8080
EXPOSE 8080
VOLUME ["/data"]
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 CMD ["/usr/local/bin/listingquery", "healthcheck"]
ENTRYPOINT ["/usr/local/bin/listingquery"]
