Azure 应用服务与节点进程管理器中断但与节点一起工作
Azure app service breaks with node process managers but works with node
我有一个奇怪的问题,我一直在摸不着头脑。我有一个在生产模式下使用 pm2 的 express 应用程序
cross-env NODE_ENV=production pm2 start ./src/index.js
这在本地工作得很好。但是,当我将其部署到 Azure App 服务时,容器不断崩溃。我可以在日志中看到 pm2 进程成功启动,但应用程序随后崩溃并显示以下错误消息
Container didn't respond to pings on port 8080
我试过将 WEBSITES_PORT
设置为 8080
,我试过使用 process.env.PORT
并将端口硬编码为 8080
,但没有任何效果。
有谁知道可能是什么原因?我更喜欢不必 运行 生产中针对节点的应用程序。
更新
我刚刚用 supervisor 试了一下,得到了同样的结果。看起来流程管理器似乎有问题,也许吧?
无论何时启动 node
服务器,您都应该指定环境给定的端口。
基本示例:
const LOCAL_APP_PORT = 9300;
server.create({ port: process.env.port || LOCAL_APP_PORT })
注意:为了调试是否与pm2
相关,例如尝试使用node
命令简单地启动它。
更新
基于您最后的评论。我认为问题可能是 pm2
默认情况下自行守护。您可以尝试将 --no-daemon
标志传递给 pm2
命令吗?
我有一个奇怪的问题,我一直在摸不着头脑。我有一个在生产模式下使用 pm2 的 express 应用程序
cross-env NODE_ENV=production pm2 start ./src/index.js
这在本地工作得很好。但是,当我将其部署到 Azure App 服务时,容器不断崩溃。我可以在日志中看到 pm2 进程成功启动,但应用程序随后崩溃并显示以下错误消息
Container didn't respond to pings on port 8080
我试过将 WEBSITES_PORT
设置为 8080
,我试过使用 process.env.PORT
并将端口硬编码为 8080
,但没有任何效果。
有谁知道可能是什么原因?我更喜欢不必 运行 生产中针对节点的应用程序。
更新 我刚刚用 supervisor 试了一下,得到了同样的结果。看起来流程管理器似乎有问题,也许吧?
无论何时启动 node
服务器,您都应该指定环境给定的端口。
基本示例:
const LOCAL_APP_PORT = 9300;
server.create({ port: process.env.port || LOCAL_APP_PORT })
注意:为了调试是否与pm2
相关,例如尝试使用node
命令简单地启动它。
更新
基于您最后的评论。我认为问题可能是 pm2
默认情况下自行守护。您可以尝试将 --no-daemon
标志传递给 pm2
命令吗?