# Используем Python 3.11 slim образ FROM python:3.11-slim # Устанавливаем системные зависимости RUN apt-get update && \ apt-get install -y --no-install-recommends \ bash \ git \ curl \ build-essential \ wget \ ca-certificates \ npm \ nodejs && \ rm -rf /var/lib/apt/lists/* # Создаем рабочую директорию WORKDIR /app # Копируем requirements.txt COPY requirements.txt . # Устанавливаем все зависимости кроме semgrep (чтобы избежать конфликта rich версий) RUN grep -vE '^(semgrep)([ =<>=~!].*)?$' requirements.txt > req_no_semgrep.txt && \ pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r req_no_semgrep.txt # Отдельно устанавливаем semgrep без зависимостей (--no-deps) # чтобы не тащил свой rich~=13.5.2 и не конфликтовал с smolagents (rich>=13.9.4) RUN pip install --no-cache-dir semgrep --no-deps # Устанавливаем npm зависимости для MCP клиента RUN npm install -g mcp-remote # Копируем весь код приложения COPY . /app # Создаем необходимые директории RUN mkdir -p /app/scan_data /app/reports /app/projects # Делаем start.sh исполняемым RUN chmod +x start.sh # Открываем порты для всех сервисов EXPOSE 7860 7861 7862 7863 7864 7865 # Healthcheck для проверки главного агента HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \ CMD curl -f http://localhost:7860 || exit 1 # Запускаем все сервисы через start.sh CMD ["bash", "start.sh"]