FROM golang:1.27.1-alpine AS build

WORKDIR /src

ARG GOPROXY=https://package-mirror.liara.ir/repository/go/
ENV GOPROXY=$GOPROXY

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

COPY cmd ./cmd
COPY internal ./internal

RUN CGO_ENABLED=0 GOOS=linux go build \
    -trimpath \
    -ldflags="-s -w" \
    -o /out/api \
    ./cmd/api

FROM alpine:3.22

RUN apk add --no-cache ca-certificates \
    && addgroup -S app \
    && adduser -S -G app app \
    && mkdir /data \
    && chown app:app /data

WORKDIR /app

COPY --from=build /out/api ./api

USER app

EXPOSE 8080

CMD ["./api"]
