如果我的节点应用程序使用启动脚本"start": "pm2 start server.js"
:
2019-04-15 11:36:34.432 ERROR - Container crime-digest__6ea5_0 for site crime-digest__6ea5 has exited, failing site start
2019-04-15 11:36:34.489 ERROR - Container crime-digest__6ea5_0 didn't respond to HTTP pings on port: 8080, failing site start. See container logs for debugging.
容器日志只包含上述错误。如果我只使用:"start": "node server.js",
,则应用程序启动正常。
我了解到,如果容器无法通过8080响应,则容器将停止运行,但是我将process.env.PORT
设置为服务器的端口,所以我不知道为什么pm2启动脚本会崩溃容器。
如果使用上面的启动脚本,我感觉process.env.PORT
是不确定的,因为过程中有些混淆,但是找不到任何方法来调试它,因为容器崩溃后,我无法再次将其插入进行检查。
我真的很感谢任何建议, 谢谢。
答案 0 :(得分:0)
我们是否要对PORT 8080进行ping操作?这里的问题是端口8080没有暴露,因此当我们尝试对容器执行ping操作时,我们并未对容器正在侦听的端口执行ping操作。
有两种解决方法。
您可以参考以下提到的文章:
https://blogs.msdn.microsoft.com/waws/2017/09/08/things-you-should-know-web-apps-and-linux/
答案 1 :(得分:0)
尝试将应用程序设置PORT添加到应用程序正在侦听的任何端口的值。
答案 2 :(得分:0)
我遇到了同样的问题。当我将server.js文件中的代码更改为以下代码时,它成功运行:
const port = process.env.port || 8080;
重新部署到Azure后,它现在可以工作。
答案 3 :(得分:0)
我在为容器部署 Rails 应用程序到 Azure Web 应用程序时遇到了这个问题
当我将应用程序部署到 Azure 时,我会收到以下错误:
2021-07-29T10:29:05.571Z INFO - Initiating warmup request to container devopsapptest_0_2eeeb139 for site devopsapptest
2021-07-29T10:29:07.733Z ERROR - Container devopsapptest_0_2eeeb139 for site devopsapptest has exited, failing site start
2021-07-29T10:29:07.737Z ERROR - Container devopsapptest_0_2eeeb139 didn't respond to HTTP pings on port: 80, failing site start. See container logs for debugging.
我是这样解决的:
默认情况下,应用服务假定您的自定义容器正在侦听端口 80
,但是,我的应用程序正在侦听端口 3000
上的请求,这导致了错误。
如果您的容器侦听不同的端口,请在您的应用服务应用中设置 WEBSITES_PORT
应用设置。这是一个 WEBSITES_PORT
作为您的应用程序设置之一,带有您的应用程序正在侦听的端口。就我而言,它是 3000
。
您可以在 Azure CLI 中进行设置:
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings WEBSITES_PORT=8000
在 Azure PowerShell 中:
Set-AzWebApp -ResourceGroupName <group-name> -Name <app-name> -AppSettings @{"WEBSITES_PORT"="8000"}
注意:应用服务目前只允许您的容器为 HTTP 请求公开一个端口。
您可能还希望将 EXPOSE your-port
命令添加到项目的 Dockerfile
。但是,对于我的项目,我不必添加 EXPOSE your-port
命令,它对我来说效果很好。
资源:Configure a custom container for Azure App Service
仅此而已。
我希望这会有所帮助