# syntax=docker/dockerfile:1

FROM node:22-bookworm-slim AS web-build
WORKDIR /src/web
COPY web/package*.json ./
RUN npm ci --no-audit --no-fund
COPY web/ ./
RUN npm run build

FROM golang:1.23-bookworm AS go-build
WORKDIR /src
COPY go.mod ./
COPY . ./
COPY --from=web-build /src/web/dist ./web/dist
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
    go build -trimpath -ldflags="-s -w" \
    -o /out/wxagent-control-plane ./cmd/wxagent-control-plane
RUN mkdir /runtime-data

FROM gcr.io/distroless/static-debian12:nonroot
WORKDIR /app
COPY --from=go-build /out/wxagent-control-plane /app/wxagent-control-plane
COPY --from=go-build --chown=65532:65532 /runtime-data /data
ENV WXAGENT_CONTROL_PLANE_ADDR=0.0.0.0:8090 \
    WXAGENT_CONTROL_PLANE_DATA=/data/control-plane-data.json
VOLUME ["/data"]
EXPOSE 8090
ENTRYPOINT ["/app/wxagent-control-plane"]
