# syntax=docker/dockerfile:1 # # agent-helm control-plane + web-UI i en enda image. # Byggs av Gitea Actions PÅ Pi5 (arm64) och pushas till localhost:5000. # Servern serverar den byggda Vue-frontenden statiskt + WebSocket på samma port. # ---------- builder ---------- FROM node:22-slim AS builder WORKDIR /app RUN npm install -g pnpm@11.3.0 # Installera bara det server + web behöver. "..."-suffixet tar med workspace- # beroenden (shared) men UTESLUTER daemon -> ingen node-pty-kompilering här. COPY pnpm-workspace.yaml package.json pnpm-lock.yaml .npmrc ./ COPY packages/shared/package.json ./packages/shared/ COPY packages/server/package.json ./packages/server/ COPY packages/web/package.json ./packages/web/ COPY packages/daemon/package.json ./packages/daemon/ RUN pnpm install --frozen-lockfile \ --filter "@agent-helm/server..." \ --filter "@agent-helm/web..." # Källkod + bygg (web -> dist, server -> en bundlad cjs-fil) COPY packages/shared ./packages/shared COPY packages/server ./packages/server COPY packages/web ./packages/web RUN pnpm --filter @agent-helm/web build \ && pnpm --filter @agent-helm/server bundle # ---------- runtime ---------- FROM node:22-slim AS runtime WORKDIR /app ENV NODE_ENV=production \ PORT=8787 \ WEB_DIST=/app/web COPY --from=builder /app/packages/server/dist/server.cjs ./server.cjs COPY --from=builder /app/packages/web/dist ./web EXPOSE 8787 USER node CMD ["node", "server.cjs"]