FROM golang:1.22-alpine AS build
WORKDIR /src
RUN apk add --no-cache git ca-certificates
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags="-s -w" -o /out/x402-gonka ./cmd/x402-gonka

FROM alpine:3.20 AS pack
WORKDIR /pack
COPY . /pack/x402-gonka
RUN rm -rf /pack/x402-gonka/.git /pack/x402-gonka/data /pack/x402-gonka/web/releases \
  && find /pack/x402-gonka -name '*.key' -delete \
  && find /pack/x402-gonka -name '.env' -delete \
  && mkdir -p /pack/x402-gonka/web/releases \
  && tar -C /pack -czf /x402-gonka-source.tar.gz x402-gonka

FROM alpine:3.20
RUN apk add --no-cache ca-certificates wget \
  && mkdir -p /data \
  && chown -R nobody:nobody /data
WORKDIR /app
COPY --from=build /out/x402-gonka /usr/local/bin/x402-gonka
COPY web /app/web
COPY --from=pack /x402-gonka-source.tar.gz /app/web/releases/x402-gonka-source.tar.gz
ENV PORT=4020
EXPOSE 4020
USER nobody
ENTRYPOINT ["x402-gonka", "serve"]
