我有一个奇怪的问题,我一直在挠头。我有一个在生产模式下使用 pm2 的快速应用程序
cross-env NODE_ENV=production pm2 start ./src/index.js
这在本地工作得很好。但是,当我将其部署到 Azure 应用服务时,容器不断崩溃。我可以在日志中看到pm2进程成功启动,但应用程序随后崩溃并显示以下错误消息
容器未响应端口 8080 上的 ping
操作
我尝试将WEBSITES_PORT
设置为8080
,并且尝试使用process.env.PORT
并将端口硬编码为8080
但没有任何效果。
有谁知道可能是什么原因?我宁愿不必在生产环境中针对节点运行应用程序。
更新我刚刚与主管一起尝试了这个,结果相同。看起来流程管理器在这里是一个问题,也许?
每当启动node
服务器时,都应指定环境中给出的端口。
基本示例:
const LOCAL_APP_PORT = 9300;
server.create({ port: process.env.port || LOCAL_APP_PORT })
注意:为了调试是否pm2
相关,请尝试仅使用node
命令启动它。
更新
基于您的最后评论。我认为问题可能是pm2
默认守护自己。你能尝试将--no-daemon
标志传递给pm2
命令吗?