Files
agenticSystem/Dockerfile
Jordan Diaz 5b87676ef4 Fix permisos: appuser con UID 1001 (mismo que acai en container app)
El MCP server creaba archivos con UID 1000 que el server Python
(UID 1001) no podía modificar ni borrar. Ahora ambos containers
usan UID 1001, eliminando conflictos de permisos en volúmenes compartidos.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 12:22:12 +00:00

61 lines
2.0 KiB
Docker

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 y documentacion
COPY agenticSystem/mcp.json ./mcp.json
COPY agenticSystem/docs/ ./docs/
# 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"]