# ---------- STAGE 1: Build React Front End ---------- FROM node:18-alpine AS build # Create app directory WORKDIR /app # Copy root package.json/package-lock.json COPY package*.json ./ # Copy client folder's package.json/package-lock.json COPY client/package*.json ./client/ # Install dependencies: # 1) Install root dependencies (for server) RUN npm install # 2) Install client dependencies WORKDIR /app/client RUN npm install # Copy the rest of the React client code COPY client/ /app/client # Build the React client RUN npm run build # ---------- STAGE 2: Final Image ---------- FROM node:18-alpine # Create directory for your server WORKDIR /app # Copy root package.json/package-lock.json again COPY package*.json ./ # Install server dependencies RUN npm install # Copy your server code COPY server.js ./ # Copy the compiled React build from STAGE 1 COPY --from=build /app/client/build ./client/build # We will serve on port 4000 (or your choice) EXPOSE 4000 # Start the server CMD [ "node", "server.js" ]