# DXA Quality Assessment - Docker Container (GPU / CUDA) # Build: docker build -t dxa-quality . # Run: docker run --gpus all -v /path/to/data:/data -p 8000:8000 dxa-quality # Base image with GPU support FROM nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 # Неинтерактивный режим для apt ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y \ python3.10 \ python3-pip \ python3.10-dev \ python3.10-venv \ build-essential \ ninja-build \ libgl1-mesa-glx \ libglib2.0-0 \ libsm6 \ libxext6 \ libxrender1 \ libgomp1 \ && rm -rf /var/lib/apt/lists/* # Обновляем pip и ставим свежий meson (0.64.0+) — ДО всех Python-пакетов RUN pip3 install --no-cache-dir --upgrade pip "meson>=0.64.0" WORKDIR /app # --- PyTorch под CUDA 11.8 (ставим отдельно, чтобы не тянулся CUDA 12.6) --- RUN pip3 install --no-cache-dir \ torch==2.8.0 torchvision==0.23.0 \ --index-url https://download.pytorch.org/whl/cu118 # --- Остальные зависимости --- # Ставим с явными ограничениями, чтобы pip разрешил конфликты RUN pip3 install --no-cache-dir \ fastapi==0.128.8 \ "uvicorn[standard]==0.39.0" \ monai==1.5.2 \ TotalSegmentator==2.18.0 \ nibabel==5.3.3 \ pydicom==2.4.4 \ pydicom-seg==0.4.1 \ opencv-python-headless==4.11.0.86 \ scikit-learn==1.6.1 \ scipy==1.13.1 \ pandas==2.3.3 \ numpy==1.26.4 \ openpyxl==3.1.5 \ matplotlib==3.9.4 \ timm==1.0.29 \ python-multipart==0.0.20 \ pydantic==2.13.4 \ typer==0.23.2 \ click==8.2.1 \ huggingface_hub==1.8.0 \ safetensors==0.7.0 \ simpleitk==2.5.6 \ tqdm==4.70.0 \ rich==15.0.0 \ PyYAML==6.0.3 # Copy application code COPY . . RUN mkdir -p models # Expose API port EXPOSE 8000 # Environment variables ENV PYTHONUNBUFFERED=1 ENV PYTHONPATH=/app # Default command CMD ["python3", "-m", "uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8000"]