50 lines
1.6 KiB
Docker
50 lines
1.6 KiB
Docker
# Используем 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"]
|