1- # Use Python 3.12 slim image
2- FROM python:3.12-slim
1+ # =============================================================================
2+ # Stage 1: Build Admin Frontend
3+ # =============================================================================
4+ FROM node:22-alpine AS admin-frontend-builder
35
4- RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 htop vim wget -y
6+ WORKDIR /app/packages/fetchcraft-admin/frontend
7+
8+ # Copy package files first for better caching
9+ COPY packages/fetchcraft-admin/frontend/package*.json ./
10+
11+ # Install dependencies
12+ RUN npm ci
13+
14+ # Copy frontend source
15+ COPY packages/fetchcraft-admin/frontend/ ./
16+
17+ # Build the frontend
18+ RUN npm run build
19+
20+ # =============================================================================
21+ # Stage 2: Build MCP Server Frontend
22+ # =============================================================================
23+ FROM node:22-alpine AS mcp-frontend-builder
24+
25+ WORKDIR /app/packages/fetchcraft-mcp-server/frontend
26+
27+ # Copy package files first for better caching
28+ COPY packages/fetchcraft-mcp-server/frontend/package*.json ./
29+
30+ # Install dependencies
31+ RUN npm ci
32+
33+ # Copy frontend source
34+ COPY packages/fetchcraft-mcp-server/frontend/ ./
35+
36+ # Build the frontend
37+ RUN npm run build
38+
39+ # =============================================================================
40+ # Stage 3: Python Backend
41+ # =============================================================================
42+ FROM python:3.12-slim AS backend
43+
44+ RUN apt-get update && apt-get install -y --no-install-recommends \
45+ ffmpeg \
46+ libsm6 \
47+ libxext6 \
48+ htop \
49+ vim \
50+ wget \
51+ && rm -rf /var/lib/apt/lists/*
552
653# Set working directory
754WORKDIR /app
@@ -12,18 +59,17 @@ COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
1259# Copy the entire project
1360COPY . .
1461
62+ # Copy built frontends from builder stages
63+ COPY --from=admin-frontend-builder /app/packages/fetchcraft-admin/frontend/dist ./packages/fetchcraft-admin/frontend/dist
64+ COPY --from=mcp-frontend-builder /app/packages/fetchcraft-mcp-server/frontend/dist ./packages/fetchcraft-mcp-server/frontend/dist
65+
1566# Sync dependencies using uv
1667RUN uv sync --frozen
1768
1869# Create Documents directory
1970RUN mkdir -p /api/Documents
2071
21- # Expose the default port
22- # EXPOSE 8001
23-
2472# Set environment variables
25- # ENV HOST=0.0.0.0
26- # ENV PORT=8001
2773ENV PYTHONUNBUFFERED=1
2874
2975# Run the server
0 commit comments