# Используем slim-образ Python для меньшего размера FROM python:3.11-slim # Устанавливаем системные зависимости для WeasyPrint и Pandoc # WeasyPrint требует: cairo, pango, gdk-pixbuf2, libffi # Pandoc — просто устанавливается через apt RUN apt-get update && apt-get install -y --no-install-recommends \ # Для WeasyPrint libpango-1.0-0 \ libpangoft2-1.0-0 \ libcairo2 \ libgdk-pixbuf2.0-0 \ libffi-dev \ shared-mime-info \ # Для Pandoc pandoc \ # Утилиты curl \ && rm -rf /var/lib/apt/lists/* # Устанавливаем рабочую директорию WORKDIR /app # Копируем requirements и устанавливаем Python-зависимости # (отдельным слоем для кэширования) COPY requirements.txt . RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt # Копируем исходный код COPY . . # Создаём папку для данных (будет переопределена volume при запуске) RUN mkdir -p /app/data # Обновляем кэш MIME-типов (нужно для WeasyPrint) RUN update-mime-database /usr/share/mime # Переменные окружения по умолчанию ENV PYTHONUNBUFFERED=1 \ DATA_DIR=/app/data \ OLLAMA_BASE_URL=http://ollama:11434 \ ENVIRONMENT=production # Открываем порт EXPOSE 8000 # Команда запуска CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]