refactor: optimize multi-stage Dockerfile for improved build efficiency and clarity

This commit is contained in:
Ari Yeger
2025-08-18 16:36:59 -04:00
parent e35c52b97b
commit 00ed4b0d1f

View File

@ -1,19 +1,13 @@
# Use official Node.js image # Use official Node.js image
FROM node:24 LABEL authors="Ari Yeger"
### Client Stage ### Client Stage
FROM node:24 AS client-build
# Set working directory
WORKDIR /app
# create client directory
RUN mkdir client
# Set the working directory for the client # Set the working directory for the client
WORKDIR /app/client WORKDIR /app/client
# Copy package files and install dependencies # Copy package files and install dependencies
COPY /client/package*.json ./ COPY /client/package*.json ./
RUN npm install RUN npm ci
# Copy server source code # Copy server source code
COPY /client . COPY /client .
@ -22,13 +16,7 @@ COPY /client .
RUN npm run build RUN npm run build
### Server Stage ### Server Stage
FROM node:24 AS server-build
# Set working directory
WORKDIR /app
# create server directory
RUN mkdir server
# Set the working directory for the server # Set the working directory for the server
WORKDIR /app/server WORKDIR /app/server
@ -42,7 +30,13 @@ COPY /server .
# no build step for server, its already JavaScript # no build step for server, its already JavaScript
# Production stage # Production stage
FROM node:24-slim FROM node:24-slim AS production
WORKDIR /app
# Copy built client files from client-build stage
COPY --from=client-build /app/client/dist ./client/dist
# Copy server files from server-build stage
COPY --from=server-build /app/server ./server
WORKDIR /app/server
# Expose the port your server runs on (change if needed) # Expose the port your server runs on (change if needed)
EXPOSE 8000 EXPOSE 8000