From 442c2f7de23bf4e200e808fa7e634458d0f6dd23 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Sun, 1 Feb 2026 13:39:25 -0600 Subject: [PATCH] fix: Dockerfile COPY order - node_modules must come after source Docker COPY replaces directory contents, so copying source code after node_modules was wiping the deps. Reordered to: 1. Copy source code first 2. Copy node_modules second (won't be overwritten) Fixes API build failure: "dist not found" Co-Authored-By: Claude Opus 4.5 --- apps/api/Dockerfile | 11 +++++++---- apps/web/Dockerfile | 12 ++++++++---- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/apps/api/Dockerfile b/apps/api/Dockerfile index f2fc72c..6c6c4e5 100644 --- a/apps/api/Dockerfile +++ b/apps/api/Dockerfile @@ -34,15 +34,18 @@ RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store \ # ====================== FROM base AS builder -# Copy dependencies +# Copy root node_modules from deps COPY --from=deps /app/node_modules ./node_modules -COPY --from=deps /app/packages ./packages -COPY --from=deps /app/apps/api/node_modules ./apps/api/node_modules -# Copy all source code +# Copy all source code FIRST COPY packages ./packages COPY apps/api ./apps/api +# Then copy workspace node_modules from deps (these go AFTER source to avoid being overwritten) +COPY --from=deps /app/packages/shared/node_modules ./packages/shared/node_modules +COPY --from=deps /app/packages/config/node_modules ./packages/config/node_modules +COPY --from=deps /app/apps/api/node_modules ./apps/api/node_modules + # Build the API app and its dependencies using TurboRepo # This ensures @mosaic/shared is built first, then prisma:generate, then the API # Cache TurboRepo build outputs for faster subsequent builds diff --git a/apps/web/Dockerfile b/apps/web/Dockerfile index c1eeb86..743036e 100644 --- a/apps/web/Dockerfile +++ b/apps/web/Dockerfile @@ -34,15 +34,19 @@ RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store \ # ====================== FROM base AS builder -# Copy dependencies +# Copy root node_modules from deps COPY --from=deps /app/node_modules ./node_modules -COPY --from=deps /app/packages ./packages -COPY --from=deps /app/apps/web/node_modules ./apps/web/node_modules -# Copy all source code +# Copy all source code FIRST COPY packages ./packages COPY apps/web ./apps/web +# Then copy workspace node_modules from deps (these go AFTER source to avoid being overwritten) +COPY --from=deps /app/packages/shared/node_modules ./packages/shared/node_modules +COPY --from=deps /app/packages/ui/node_modules ./packages/ui/node_modules +COPY --from=deps /app/packages/config/node_modules ./packages/config/node_modules +COPY --from=deps /app/apps/web/node_modules ./apps/web/node_modules + # Build arguments for Next.js ARG NEXT_PUBLIC_API_URL ENV NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL}