# syntax=docker/dockerfile:1.7
FROM oven/bun:1.4.0-alpine AS ui
WORKDIR /src/ui
COPY ui/package.json ui/bun.lock ./
RUN bun install --frozen-lockfile
COPY ui ./
RUN bun run build

FROM golang:1.24-alpine AS build
WORKDIR /src
RUN apk add --no-cache git
COPY go.mod go.sum ./
RUN go mod download
COPY cmd ./cmd
COPY internal ./internal
COPY --from=ui /src/internal/adminui/dist ./internal/adminui/dist
RUN CGO_ENABLED=0 go build -trimpath -ldflags='-s -w' -o /pawsql ./cmd/pawsql

FROM alpine:3.21
RUN apk add --no-cache ca-certificates docker-cli
COPY --from=build /pawsql /usr/local/bin/pawsql
EXPOSE 5432
ENTRYPOINT ["/usr/local/bin/pawsql"]
CMD ["--config", "/etc/pawsql/Barkfile", "--admin-listen", ":9090"]
