diff --git a/Dockerfile b/Dockerfile index 223ac85..e1cd41f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,7 +16,10 @@ ENV PYTHONUNBUFFERED=1 # gcc и libpq-dev — необходимы для сборки библиотеки psycopg2 (драйвер для Postgres). # rm -rf /var/lib/apt/lists/* — удаляем кэш установщика, чтобы уменьшить размер образа. RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc libpq-dev && rm -rf /var/lib/apt/lists/* + gcc libpq-dev \ + libfreetype6 libpng16-16 \ + fonts-dejavu-core \ + && rm -rf /var/lib/apt/lists/* # Сначала копируем только список зависимостей. # Это нужно для "кэширования слоев": если ты не менял библиотеки, Docker не будет переустанавливать их заново при сборке. diff --git a/shiftflow/views.py b/shiftflow/views.py index 8190fc5..a1e5e1e 100644 --- a/shiftflow/views.py +++ b/shiftflow/views.py @@ -70,7 +70,11 @@ def _render_dxf_preview_png( from ezdxf.addons.drawing.matplotlib import MatplotlibBackend from ezdxf.addons.drawing import config as draw_config except Exception as e: - raise RuntimeError('Не установлены зависимости для превью DXF: ezdxf и matplotlib') from e + # Важно: сюда попадают не только «пакет не установлен», но и ошибки импорта из-за системных библиотек + # (например, не хватает freetype/png в slim-образе). Поэтому сохраняем первопричину в тексте исключения. + raise RuntimeError( + f"Не удалось импортировать зависимости для превью DXF (ezdxf/matplotlib): {type(e).__name__}: {e}" + ) from e if not dxf_path or not os.path.exists(dxf_path): raise FileNotFoundError('DXF файл не найден')