|
1 | | -FROM node:22-slim |
| 1 | +FROM node:22-slim AS build |
2 | 2 |
|
3 | 3 | WORKDIR /app |
4 | 4 |
|
5 | | -# Copy built artifacts from monorepo build |
6 | | -# These should be built before docker build with: pnpm build |
| 5 | +# Copy monorepo root files |
| 6 | +COPY pnpm-lock.yaml pnpm-workspace.yaml package.json .npmrc* ./ |
| 7 | + |
| 8 | +# Copy workspace package manifests |
| 9 | +COPY apps/watcher/package.json ./apps/watcher/ |
| 10 | +COPY packages/shared/package.json ./packages/shared/ |
| 11 | +COPY packages/backend/package.json ./packages/backend/ |
7 | 12 |
|
8 | | -# Watcher |
9 | | -COPY apps/watcher/dist/ ./dist/ |
| 13 | +# Install pnpm and fetch dependencies |
| 14 | +RUN corepack enable && corepack prepare pnpm@latest --activate |
| 15 | +RUN pnpm install --frozen-lockfile |
10 | 16 |
|
11 | | -# Shared package (squadhub client) |
12 | | -COPY packages/shared/package.json ./node_modules/@clawe/shared/package.json |
13 | | -COPY packages/shared/dist/ ./node_modules/@clawe/shared/dist/ |
| 17 | +# Copy source and build |
| 18 | +COPY packages/shared/ ./packages/shared/ |
| 19 | +COPY packages/backend/ ./packages/backend/ |
| 20 | +COPY apps/watcher/ ./apps/watcher/ |
| 21 | +RUN pnpm build --filter=@clawe/watcher |
14 | 22 |
|
15 | | -# Backend (Convex API types) |
16 | | -COPY packages/backend/package.json ./node_modules/@clawe/backend/package.json |
17 | | -COPY packages/backend/convex/_generated/ ./node_modules/@clawe/backend/convex/_generated/ |
18 | | -COPY packages/backend/convex/*.ts ./node_modules/@clawe/backend/convex/ |
| 23 | +# Deploy: extract watcher with all production deps into /app/deploy |
| 24 | +RUN pnpm --filter=@clawe/watcher --prod deploy deploy |
19 | 25 |
|
20 | | -# Create a clean package.json without workspace:* references (npm doesn't support them) |
21 | | -RUN echo '{"name":"@clawe/watcher","private":true,"type":"module"}' > package.json |
| 26 | +# --- Production image --- |
| 27 | +FROM node:22-slim |
| 28 | + |
| 29 | +WORKDIR /app |
22 | 30 |
|
23 | | -# Install production dependencies |
24 | | -RUN npm install convex axios ws moment-timezone --omit=dev |
| 31 | +COPY --from=build /app/deploy . |
25 | 32 |
|
26 | 33 | ENV NODE_ENV=production |
27 | 34 |
|
|
0 commit comments