# Многоэтапная сборка для Python приложения FROM python:3.11-slim AS builder # Установка зависимостей для сборки RUN apt-get update && apt-get install -y \ gcc \ g++ \ && rm -rf /var/lib/apt/lists/* # Установка рабочей директории WORKDIR /app # Копирование requirements файла COPY requirements.txt . # Установка зависимостей Python RUN pip install --no-cache-dir --user -r requirements.txt # Финальный образ FROM python:3.11-slim # Установка системных зависимостей RUN apt-get update && apt-get install -y \ curl \ && rm -rf /var/lib/apt/lists/* # Создание пользователя для безопасности RUN groupadd -r appuser && useradd -r -g appuser appuser # Установка рабочей директории WORKDIR /app # Копирование Python пакетов из builder COPY --from=builder /root/.local /root/.local # Копирование исходного кода COPY . . # Создание необходимых директорий RUN mkdir -p /app/templates /app/output && \ chown -R appuser:appuser /app # Добавление локальных пакетов в PATH ENV PATH=/root/.local/bin:$PATH # Переключение на непривилегированного пользователя USER appuser # Экспорт порта EXPOSE 8000 # Команда запуска CMD ["python", "-m", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]