【Azure 应用服务】NodeJS项目部署在App Service For Linux环境中,部署完成后应用无法访问

问题描述

NodeJS项目部署在App Service For Linux环境中,部署完成后应用无法访问,在启动日志中发现错误消息:ERROR - Container XXX_0 for site XXX did not start within expected time limit. Elapsed time = 230sec


https://img2020.cnblogs.com/blog/2127802/202104/2127802-20210430171403753-1667811984.png

问题分析

230秒 (大约4分钟)时App Service默认的HTTP请求超时时间,不可修改。但是此处出现这个错误最后的结果确实导致Site停止,Startup失败。

对比本地运行的结果,并没有出现startup失败及启动超时的问题,所以定位问题在应用的配置上,因为Azure App Service for Linux是把NodeJS的项目部署在容器中(Container),所以需要仔细排查端口(WEBSITES_PORT)和HOST的值. 在Container容器中,HOST不能指定为127.0.0.1或者localhost,需要修改为0.0.0.0 。 这是容器中非常重要的一点。

问题解决

检查项目中配置的环境变量,果然,HOST设置为127.0.0.1了,修改为0.0.0.0后,发布到Azure中,成功运行。


https://img2020.cnblogs.com/blog/2127802/202104/2127802-20210430172945527-570371860.png

参考资料

Azure: Container did not start within expected time (WebApp): https://stackoverflow.com/questions/52823025/azure-container-did-not-start-within-expected-time-webapp

Configure a Node.js app for Azure App Service: https://docs.microsoft.com/en-us/azure/app-service/configure-language-nodejs?pivots=platform-linux

你可能感兴趣的:(【Azure 应用服务】NodeJS项目部署在App Service For Linux环境中,部署完成后应用无法访问)