Служба приложений Azure внезапно остановилась из-за ошибки PhantomJS

У нас есть Restify API, работающий в Службе приложений Azure в Linux уже некоторое время. Внезапно это приложение (как тестовое, так и производственное, они работают как отдельные приложения) перестало работать. Судя по журналам, ошибка связана с пакетом, который мы используем node-highcharts-exporting который зависит от PhantomJS. Служба приложений использует Node 8.1.

Мы попытались повторно развернуть код, обновив версию узла до 8.12 (не хочу использовать последнюю версию без тестирования), но все равно не повезло.

Журналы развертывания: (Эта часть успешно завершена. Это только для справки)

введите здесь описание изображения

Журналы контейнера: (здесь не запускается)

введите здесь описание изображения

Пытался воспроизвести ту же среду на месте, и все работает нормально. Создана новая служба приложений, которая также сталкивается с той же проблемой. Любая помощь горячо приветствуется.

Обновление 1: кажется, я понял, что происходит. Это связано с библиотеками шрифтов в Linux https://github.com/ariya/phantomjs/issues/10904

Мне нужно установить libfontconfig, но это не поддерживается в Службе приложений Azure.


person user1868744    schedule 25.09.2019    source источник
comment
Вы могли бы резюмировать это как ответ, чтобы закрыть эту проблему.   -  person Joey Cai    schedule 27.09.2019


Ответы (1)


Да, это связано с ограничением песочницы в службе приложений. Чтобы подчеркнуть, стандартные / собственные веб-приложения Azure работают в безопасной среде, называемой песочницей. Каждое приложение запускается в собственной песочнице, изолируя его выполнение от других экземпляров на том же компьютере, а также обеспечивая дополнительную степень безопасности и конфиденциальности, которые в противном случае были бы недоступны.

Не поддерживаются сценарии в стандартной службе приложений - PhantomJS (/ Selenium): пытается подключиться к локальному адресу, а также использует GDI +. Известная проблема для всех генераторов PDF на основе wkhtmltopdf или phantomjs: пользовательские шрифты не отображаются (используется шрифт, установленный системой вместо этого) из-за ограничений API GDI в песочнице. См. Службу приложений GitHub песочница.

Однако в зависимости от ваших требований вы можете использовать настраиваемый контейнер в службе приложений (вы можете использовать настраиваемый образ Docker), который позволяет вносить изменения в ОС, необходимые вашему приложению.

Ознакомьтесь с этим документом для получения более подробной информации по этой теме:

Запустите настраиваемый контейнер Linux в Службе приложений Azure (можно использовать настраиваемый образ Docker): https://docs.microsoft.com/azure/app-service/containers/quickstart-docker

Запустите настраиваемый контейнер Windows в Azure (предварительная версия): https://docs.microsoft.com/azure/app-service/app-service-web-get-started-windows-container

person AjayKumar-MSFT    schedule 28.09.2019
comment
спасибо .. это то, что в итоге произошло, но я не понял, почему это произошло внезапно. Это приложение работает нормально последние 8 месяцев или около того. Никаких изменений в коде или нового развертывания. - person user1868744; 02.10.2019