FROM python:3.12-slim AS base WORKDIR /app # Instalar dependencias de sistema + Node.js 20 RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ curl \ ca-certificates \ gnupg \ git \ && mkdir -p /etc/apt/keyrings \ && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \ | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" \ > /etc/apt/sources.list.d/nodesource.list \ && apt-get update \ && apt-get install -y --no-install-recommends nodejs \ && rm -rf /var/lib/apt/lists/* # Instalar dependencias Python COPY agenticSystem/requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Instalar dependencias del MCP server (Node) COPY agenticSystem/mcp-server/package.json agenticSystem/mcp-server/package-lock.json* ./mcp-server/ RUN cd mcp-server && npm install --production # Instalar dependencias de sistema de Playwright (como root) RUN cd mcp-server && npx playwright install-deps chromium # Instalar uv (incluye uvx) para mcp-server-fetch RUN pip install --no-cache-dir uv # Copiar codigo fuente del MCP server COPY agenticSystem/mcp-server/ ./mcp-server/ # Copiar codigo fuente Python COPY agenticSystem/src/ ./src/ # Copiar configuracion MCP, documentacion y agentes COPY agenticSystem/mcp.json ./mcp.json COPY agenticSystem/docs/ ./docs/ COPY agenticSystem/agents/ ./agents/ # Crear directorio para mount point de webs RUN mkdir -p /opt/acai/webs # Usuario no-root — UID 1001 para coincidir con el usuario 'acai' del container app # Así los archivos creados por el MCP server son escribibles por ambos containers RUN useradd -m -u 1001 appuser \ && chown -R appuser:appuser /app \ && chown -R appuser:appuser /opt/acai/webs USER appuser # Descargar Chromium como appuser (queda en ~/.cache/ms-playwright/) RUN cd mcp-server && npx playwright install chromium EXPOSE 8000 CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8000"]