From 057663233d16c6b01ad39678ab8215cf142efef9 Mon Sep 17 00:00:00 2001 From: Juan Sebastian Montoya Date: Mon, 10 Mar 2025 00:52:53 -0500 Subject: [PATCH] refactor: optimize Dockerfile for multi-stage build - Split Dockerfile into multi-stage build for improved efficiency - Added separate builder and runner stages - Optimized dependency and artifact copying - Reduced final image size by separating build and runtime steps --- apps/api/Dockerfile | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/api/Dockerfile b/apps/api/Dockerfile index 26ef579..cf1969b 100644 --- a/apps/api/Dockerfile +++ b/apps/api/Dockerfile @@ -1,7 +1,7 @@ FROM node:22-alpine AS base # Rebuild the source code only when needed -FROM base +FROM base AS builder WORKDIR /app COPY . . # Install dependencies @@ -13,6 +13,16 @@ RUN cd apps/api && npm run prisma:generate # Build the project RUN npx turbo run build --filter=api +# Copy the built project +FROM base AS runner +WORKDIR /app +COPY --from=builder /app/node_modules ./node_modules +COPY --from=builder /app/package.json ./package.json +COPY --from=builder /app/package-lock.json ./package-lock.json +COPY --from=builder /app/apps/api/package.json ./apps/api/package.json +COPY --from=builder /app/apps/api/dist ./apps/api/dist +COPY --from=builder /app/apps/api/prisma ./apps/api/prisma + EXPOSE 4000 # Start the server ENTRYPOINT [ "npm", "run", "start:api" ]