# Stage 1: Build the React frontend FROM node:20-slim AS frontend-builder WORKDIR /app # Copy package.json and install all dependencies # Paths are relative to the build context (project root) COPY general-market-intelligence/package.json ./ RUN npm install # Copy the rest of the frontend application code COPY general-market-intelligence/ . # Build the application RUN npm run build # --- # Stage 2: Final application image FROM python:3.11-slim WORKDIR /app # Install system dependencies (minimal) # We use NodeSource to get a clean, modern Node.js install without bloat RUN apt-get update && \ apt-get install -y --no-install-recommends curl ca-certificates && \ curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ apt-get install -y --no-install-recommends nodejs && \ rm -rf /var/lib/apt/lists/* # Install Python dependencies COPY general-market-intelligence/requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Copy the Node.js server and its production dependencies manifest COPY general-market-intelligence/server.cjs . COPY general-market-intelligence/package.json . COPY helpers.py . COPY config.py . COPY market_db_manager.py . # Install dependencies for the Node.js server RUN npm install RUN npm install express cors body-parser # Copy the built React app from the builder stage COPY --from=frontend-builder /app/dist ./dist # Copy the main Python orchestrator script from the project root COPY general-market-intelligence/market_intel_orchestrator.py . # Expose the port the Node.js server will run on EXPOSE 3001 # The command to run the application CMD ["node", "server.cjs"]