Я сталкиваюсь с проблемами при попытке развернуть контейнер на основе Linux с. Net Core 3.0 с моим приложением. Одна из его функций - отправлять периодические отчеты в формате PDF, но сам рендеринг не выполняется.
Для рендеринга PDF-файла я использую пакет MigraDo c, это зависит от System.Drawing.Common.
Мой контейнер имеет все необходимые зависимости, необходимые для базового образа на основе debian для поддержки System.Drawing.Common.
# install System.Drawing native dependencies
RUN apt-get update \
&& apt-get install -y --allow-unauthenticated \
libc6-dev \
libgdiplus \
libx11-dev \
xvfb \
libfontconfig \
&& rm -rf /var/lib/apt/lists/*
Исключение, которое я получаю: Could not open display (X-Server required. Check your DISPLAY environment variable)
Я пытался настроить виртуальный фрейм-буфер через Xvfb, но как бы я его ни настраивал asp. net ядро не может открыть необходимое виртуальное устройство. Итак, я попытался:
запустить Xvfb внутри docker контейнера, чтобы запустить буфер как устройство: 99.0 RUN Xvfb :99 -screen 0 1024x768x16 &
, а затем установить переменную среды ENV DISPLAY=:99.0
запуск Xvfb на хост-машине и передача переменной DISPLAY
в docker контейнер
запуск отображения с использованием startx -- `which Xvfb` :99 -screen 0 1024x768x24
внутри контейнера
запуск отображения с использованием startx -- `which Xvfb` :99 -screen 0 1024x768x24
вне контейнера и передача его в качестве переменной среды
Я не имею ни малейшего представления, как решить эту проблему, кроме как вытянуть migrado c и переписать его, чтобы использовать какую-то вменяемую графическую библиотеку (что, к сожалению, не подлежит обсуждению, несмотря на то, как это было бы весело)