0

我们在 Linux 上的 Azure 应用服务中运行了一段时间的 Restify API。突然,这个应用程序(测试和生产,它们作为单独的应用程序运行)停止工作。根据日志,错误与我们使用的依赖于 PhantomJS的 node-highcharts-exporting包有关。应用服务正在使用节点 8.1。

我们尝试重新部署代码,将节点版本升级到 8.12(不想使用未经测试的最新版本)但仍然没有运气。

部署日志:(此部分成功,仅供参考)

在此处输入图像描述

容器日志:(此处启动失败)

在此处输入图像描述

尝试在本地复制相同的环境,一切正常。创建了一个新的应用服务,它也遇到了同样的问题。任何帮助深表感谢。

更新1: 我想我知道发生了什么。这与 linux 上的字体库有关https://github.com/ariya/phantomjs/issues/10904

我需要安装libfontconfig,但 Azure 应用服务不支持此功能。

4

1 回答 1

0

是的,这是由于对应用服务的沙盒限制。只是强调一下,标准/本机 Azure Web 应用程序在称为沙盒的安全环境中运行。每个应用程序都在自己的沙箱中运行,将其执行与同一台机器上的其他实例隔离开来,并提供额外的安全性和隐私性,否则将无法使用。

标准应用服务不支持的场景 - PhantomJS (/Selenium):尝试连接到本地地址,并且还使用 GDI+。所有基于 wkhtmltopdf 或 phantomjs 的 PDF 生成器的已知问题:不呈现自定义字体(使用系统安装的字体而是)因为沙盒 GDI API 限制。请参阅应用服务 GitHub沙盒页面。

但是,根据您的要求,您可以在应用服务中使用自定义容器(您可以使用自定义 Docker 映像),让您可以更改应用所需的操作系统。

查看这些文档以获取有关此主题的更多详细信息:

在 Azure 应用服务中运行自定义 Linux 容器(您可以使用自定义 Docker 映像):https ://docs.microsoft.com/azure/app-service/containers/quickstart-docker

在 Azure 中运行自定义 Windows 容器(预览版): https ://docs.microsoft.com/azure/app-service/app-service-web-get-started-windows-container

于 2019-09-28T20:22:58.967 回答