diff --git a/apps/web/Dockerfile b/apps/web/Dockerfile index 792588a..740edd6 100644 --- a/apps/web/Dockerfile +++ b/apps/web/Dockerfile @@ -27,6 +27,20 @@ COPY apps/web/package.json ./apps/web/ # Install dependencies (no cache mount — Kaniko builds are ephemeral in CI) RUN pnpm install --frozen-lockfile +# ====================== +# Production dependencies stage +# ====================== +FROM base AS prod-deps + +# Copy all package.json files for workspace resolution +COPY packages/shared/package.json ./packages/shared/ +COPY packages/ui/package.json ./packages/ui/ +COPY packages/config/package.json ./packages/config/ +COPY apps/web/package.json ./apps/web/ + +# Install production dependencies only +RUN pnpm install --frozen-lockfile --prod + # ====================== # Builder stage # ====================== @@ -87,7 +101,7 @@ RUN rm -rf /usr/local/lib/node_modules/npm /usr/local/bin/npm /usr/local/bin/npx WORKDIR /app # Copy node_modules from builder (includes all dependencies in pnpm store) -COPY --from=builder --chown=nextjs:nodejs /app/node_modules ./node_modules +COPY --from=prod-deps --chown=nextjs:nodejs /app/node_modules ./node_modules # Copy built packages (includes dist/ directories) COPY --from=builder --chown=nextjs:nodejs /app/packages ./packages @@ -98,7 +112,7 @@ COPY --from=builder --chown=nextjs:nodejs /app/apps/web/public ./apps/web/public COPY --from=builder --chown=nextjs:nodejs /app/apps/web/next.config.ts ./apps/web/ COPY --from=builder --chown=nextjs:nodejs /app/apps/web/package.json ./apps/web/ # Copy app's node_modules which contains symlinks to root node_modules -COPY --from=builder --chown=nextjs:nodejs /app/apps/web/node_modules ./apps/web/node_modules +COPY --from=prod-deps --chown=nextjs:nodejs /app/apps/web/node_modules ./apps/web/node_modules # Set working directory to web app WORKDIR /app/apps/web