Spaces:
Running
Running
# Stage 1: Build frontend | |
FROM node:latest AS frontend | |
# Set working directory for frontend | |
WORKDIR /app/frontend | |
# Copy frontend source code | |
COPY frontend/package.json frontend/package-lock.json ./ | |
COPY frontend . | |
# Install dependencies | |
RUN npm install | |
# Build frontend | |
RUN npm run build | |
# Stage 2: Build backend | |
FROM python:3.9-slim AS backend | |
# Set working directory for backend | |
WORKDIR /app/backend | |
# Copy backend source code | |
COPY backend . | |
# Install backend dependencies | |
COPY backend/requirements.txt . | |
RUN pip install --no-cache-dir -r requirements.txt | |
# Stage 3: Serve frontend and backend using nginx and gunicorn | |
FROM nginx:latest AS production | |
# Copy built frontend files from the frontend stage to nginx | |
COPY --from=frontend /app/frontend/dist /usr/share/nginx/html | |
# Copy built backend code from the backend stage | |
COPY --from=backend /app/backend /app/backend | |
# Expose port 80 for nginx | |
EXPOSE 80 | |
# Start gunicorn server for backend | |
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app:app"] | |