/
alexefan136
/
flowstack
Обзор
Документация
Войти
/
alexefan136
/
flowstack
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
core/engine/Dockerfile
99 строк
4 KB
Alexander Efanov
upd fix
29 июл 2026, 23:26
29 июл 2026, 23:26
d8ac8ee
Код
Авторство
О чём код?
# syntax=docker/dockerfile:1.6 # ============================================================================ # FlowStack Engine — Multi-Arch Python FastAPI # Поддержка: linux/amd64, linux/arm64 # ============================================================================ # ---------- Builder stage (TARGETPLATFORM — под целевую архитектуру!) ---------- FROM --platform=$TARGETPLATFORM python:3.12-slim AS builder # ✅ ДИАГНОСТИКА: показываем архитектуру сборки RUN echo "=== Builder: $(uname -m) | Target: $TARGETPLATFORM ===" # Install system dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ curl \ git \ && rm -rf /var/lib/apt/lists/* # Install uv COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv WORKDIR /app # Copy package metadata first COPY pyproject.toml uv.lock README.md* ./ # Create dummy README if needed RUN test -f README.md || echo "# FlowStack Engine" > README.md ARG INSTALL_DEV=false # ✅ КЛЮЧЕВОЕ ИСПРАВЛЕНИЕ: БЕЗ mount cache! # Это медленнее, но гарантирует что venv будет собран правильно под целевую архитектуру. # Buildx кэширует слои между архитектурами — это ломает бинарники pydantic_core. RUN uv sync --frozen --no-dev # ✅ КРИТИЧЕСКАЯ ПРОВЕРКА: убеждаемся что pydantic_core собран правильно RUN echo "=== Checking pydantic_core architecture ===" && \ ls -la /app/.venv/lib/python3.12/site-packages/pydantic_core/*.so && \ /app/.venv/bin/python -c "import pydantic_core; print('✅ pydantic_core OK:', pydantic_core.__version__)" # Copy source code COPY src ./src COPY tests ./tests # ---------- Runtime stage (TARGETPLATFORM) ---------- FROM --platform=$TARGETPLATFORM python:3.12-slim AS runtime RUN apt-get update && apt-get install -y --no-install-recommends \ curl \ tini \ && rm -rf /var/lib/apt/lists/* \ && addgroup --system --gid 1001 appgroup \ && adduser --system --uid 1001 --ingroup appgroup appuser WORKDIR /app COPY --from=builder --chown=appuser:appgroup /app/.venv /app/.venv COPY --from=builder --chown=appuser:appgroup /app/src /app/src COPY --from=builder --chown=appuser:appgroup /app/pyproject.toml /app/pyproject.toml COPY --from=builder --chown=appuser:appgroup /app/tests /app/tests RUN mkdir -p /app/logs /app/cache \ && chown -R appuser:appgroup /app/logs /app/cache ENV PATH="/app/.venv/bin:$PATH" \ PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ PIP_NO_CACHE_DIR=1 \ PORT=8000 \ PYTHONPATH=/app \ LLM_PROVIDER=cloud_ru \ LLM_BASE_URL=https://foundation-models.api.cloud.ru/v1 \ LLM_MODEL=deepseek-ai/DeepSeek-V4-Pro \ LLM_MAX_TOKENS=8192 \ LLM_TEMPERATURE=0.5 \ LLM_TOP_P=0.9 \ LLM_TIMEOUT=300.0 \ LLM_MAX_RETRIES=3 \ LLM_CACHE_DIR=/app/cache \ LOG_LEVEL=info \ LOG_FORMAT=json # ✅ ФИНАЛЬНАЯ ПРОВЕРКА RUN /app/.venv/bin/python -c "import pydantic_core; print('✅ Runtime OK:', pydantic_core.__version__)" && \ ls -la /app/.venv/lib/python3.12/site-packages/pydantic_core/*.so USER appuser EXPOSE 8000 ENTRYPOINT ["/usr/bin/tini", "--"] CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "4", "--log-level", "info"] LABEL org.opencontainers.image.title="FlowStack Engine" \ org.opencontainers.image.description="LLM Orchestration Engine (multi-arch)" \ org.opencontainers.image.vendor="FlowStack" \ org.opencontainers.image.version="1.0.0"