FROM python:3.13-slim

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    PLANEXE_CONFIG_PATH=/app \
    PIP_NO_CACHE_DIR=1 \
    PIP_PREFER_BINARY=1 \
    PYTHONPATH=/app:/app/mcp_cloud:/app/database_api

RUN groupadd --gid 1000 appuser && useradd --uid 1000 --gid 1000 -d /app -s /sbin/nologin appuser

WORKDIR /app

# Bring in the shared database models, prompt catalog (for prompt_catalog_samples), and this MCP server.
COPY database_api /app/database_api
COPY worker_plan/worker_plan_api /app/worker_plan_api
COPY mcp_cloud /app/mcp_cloud
COPY llm_config /app/llm_config
COPY public/llms.txt /app/public/llms.txt

# Install dependencies
RUN set -eux; \
    pip install --no-cache-dir --upgrade pip; \
    pip install --no-cache-dir --prefer-binary -r /app/mcp_cloud/requirements.txt

# Ensure output directory exists (mounted in docker-compose).
RUN mkdir -p /app/run && chown -R appuser:appuser /app/run

USER appuser

# Default to HTTP server mode (can be overridden with PLANEXE_MCP_MODE env var)
CMD ["python", "-m", "mcp_cloud.http_server"]
