@@ -52,13 +52,13 @@ COPY --from=deps /app/packages/backend/node_modules ./packages/backend/node_modu
5252COPY packages/shared ./packages/shared
5353COPY packages/backend ./packages/backend
5454
55- # Build shared first, then backend with bundle
55+ # Build shared first, then backend
5656RUN yarn workspace @polypay/shared build && \
57- yarn workspace @polypay/backend build:bundle
57+ yarn workspace @polypay/backend build
5858
5959
6060# ===== STAGE 3: RUNNER =====
61- # Minimal production image with bundled code
61+ # Production image
6262FROM node:24-alpine AS runner
6363WORKDIR /app
6464
@@ -68,37 +68,30 @@ ENV NODE_ENV=production
6868RUN addgroup --system --gid 1001 nodejs && \
6969 adduser --system --uid 1001 nestjs
7070
71- # Copy shared package (external in bundle)
71+ # Copy node_modules with correct ownership
72+ COPY --chown=nestjs:nodejs --from=deps /app/node_modules ./node_modules
73+ COPY --chown=nestjs:nodejs --from=deps /app/packages/shared/node_modules ./packages/shared/node_modules
74+ COPY --chown=nestjs:nodejs --from=deps /app/packages/backend/node_modules ./packages/backend/node_modules
75+
76+ # Copy package.json
7277COPY --chown=nestjs:nodejs --from=builder /app/packages/shared/package.json ./packages/shared/
73- COPY --chown=nestjs:nodejs --from=builder /app/packages/shared/dist ./packages/shared/dist
78+ COPY --chown=nestjs:nodejs --from=builder /app/packages/backend/package.json ./packages/backend/
7479
75- # Copy bundled backend
76- COPY --chown=nestjs:nodejs --from=builder /app/packages/backend/dist/main.bundle.js ./packages/backend/dist/
80+ # Copy built output
81+ COPY --chown=nestjs:nodejs --from=builder /app/packages/shared/dist ./packages/shared/dist
82+ COPY --chown=nestjs:nodejs --from=builder /app/packages/backend/dist ./packages/backend/dist
7783
7884# Copy prisma files
7985COPY --chown=nestjs:nodejs --from=builder /app/packages/backend/prisma ./packages/backend/prisma
8086COPY --chown=nestjs:nodejs --from=builder /app/packages/backend/prisma.config.ts ./packages/backend/
8187
82- # Install runtime dependencies
83- WORKDIR /app/packages/backend
84- RUN npm init -y && \
85- npm install --no-save \
86- @prisma/client \
87- @prisma/adapter-pg \
88- prisma \
89- pg \
90- @nestjs/platform-express \
91- class-transformer \
92- class-validator \
93- viem \
94- dotenv && \
95- mkdir -p node_modules/@polypay && \
96- ln -s /app/packages/shared node_modules/@polypay/shared && \
97- ln -s /app/packages/backend/node_modules /app/packages/shared/node_modules && \
98- chown -R nestjs:nodejs /app/packages/backend/node_modules
88+ # Copy assets folder
89+ COPY --chown=nestjs:nodejs --from=builder /app/packages/backend/assets ./packages/backend/assets
9990
10091USER nestjs
10192
93+ WORKDIR /app/packages/backend
94+
10295EXPOSE 4000
10396
104- CMD ["sh" , "-c" , "npx prisma migrate deploy && node dist/main.bundle.js " ]
97+ CMD ["sh" , "-c" , "npx prisma migrate deploy && node dist/main" ]
0 commit comments