# ---- Stage 1: build the Vue frontend ---- FROM node:22-alpine AS web-builder WORKDIR /web RUN corepack enable COPY web/package.json web/pnpm-lock.yaml web/pnpm-workspace.yaml ./ RUN pnpm install --frozen-lockfile COPY web/ ./ RUN pnpm run build # ---- Stage 2: build the Go backend ---- FROM golang:1.26 AS builder WORKDIR /src COPY go.mod go.sum ./ RUN go mod download COPY . . COPY --from=web-builder /web/dist ./web/dist RUN CGO_ENABLED=0 GOOS=linux go build -o /out/im_workbench ./cmd/workbench FROM alpine:3.22 WORKDIR /app ENV WORKBENCH_CONFIG=/app/configs/workbench.test.json COPY --from=builder /out/im_workbench /app/im_workbench COPY configs /app/configs COPY --from=web-builder /web/dist /app/web/dist ENV WORKBENCH_FRONTEND_DIR=/app/web/dist EXPOSE 6061 ENTRYPOINT ["/app/im_workbench"]