# #region docker.agent.Dockerfile [C:3] [TYPE Module] [SEMANTICS docker,agent,build] # @BRIEF Agent Dockerfile — Python 3.11 slim + Gradio + LangGraph agent. # @LAYER Infrastructure # @RELATION DEPENDS_ON -> [EXT:path:agent/requirements.txt] # @RELATION DEPENDS_ON -> [EXT:path:shared/pyproject.toml] # @PRE Docker builder context — корень проекта. agent/, shared/, docker/ доступны. # @POST Образ с Gradio-агентом, LangGraph, shared-утилитами. # @RATIONALE Агент теперь в отдельном проекте agent/ с собственным pyproject.toml. # Shared-пакет устанавливается как зависимость. # @REJECTED COPY backend/ копирование полностью устарело — агент больше не в backend. FROM python:3.11-slim WORKDIR /app # System deps for pdfplumber + psycopg + certs RUN apt-get update && apt-get install -y --no-install-recommends \ libgl1 libglib2.0-0 libpq5 ca-certificates openssl && rm -rf /var/lib/apt/lists/* # Python dependencies — agent runtime ARG WITH_EMBEDDINGS=false # Install shared package first (lightweight utilities) COPY shared/ /app/shared/ RUN pip install --no-cache-dir -e /app/shared/ # Install agent requirements COPY agent/requirements.txt /app/agent/requirements.txt RUN pip install --no-cache-dir -r /app/agent/requirements.txt # Optional: semantic embedding routing COPY agent/requirements-embeddings.txt /app/agent/requirements-embeddings.txt RUN if [ "$WITH_EMBEDDINGS" = "true" ]; then \ pip install --no-cache-dir -r /app/agent/requirements-embeddings.txt; \ fi # Agent source code COPY agent/ /app/agent/ RUN pip install --no-cache-dir -e /app/agent/ # Entrypoint for corporate CA cert installation COPY docker/certs.sh /app/docker/certs.sh COPY docker/agent.entrypoint.sh /app/docker/agent.entrypoint.sh RUN chmod +x /app/docker/agent.entrypoint.sh /app/docker/certs.sh # Gradio server ENV GRADIO_SERVER_NAME=0.0.0.0 ENV GRADIO_SERVER_PORT=7860 WORKDIR /app/agent ENTRYPOINT ["/app/docker/agent.entrypoint.sh"] # #endregion docker.agent.Dockerfile