# Stage 1: Build the React frontend | |
FROM node:16 AS build | |
# Set the working directory | |
WORKDIR /app | |
# Copy the React frontend code | |
COPY frontend/package.json frontend/package-lock.json ./frontend/ | |
RUN cd frontend && npm install | |
# Build the React app (inside the frontend folder) | |
COPY frontend ./frontend | |
RUN cd frontend && npm run build | |
# Stage 2: Set up the Node.js backend | |
FROM node:16 | |
# Set the working directory | |
WORKDIR /app | |
# Copy backend code | |
COPY backend/package.json backend/package-lock.json ./backend/ | |
RUN cd backend && npm install | |
# Copy the React build files from Stage 1 to the backend/build folder | |
COPY --from=build /app/frontend/build ./backend/build | |
# Copy the backend source code | |
COPY backend ./backend | |
RUN mkdir -p /app/backend/database && chmod -R 777 /app/backend/database | |
# Expose the backend's port | |
EXPOSE 7860 | |
WORKDIR /app/backend | |
# Start the backend server | |
CMD [ "node", "./index.js"] | |