当前位置: 首页 > 知识库问答 >
问题:

将Express应用部署到Azure应用服务未响应端口:8080上的HTTP ping

孟品
2023-03-14

我尝试将我的NestJs应用程序(使用快速适配器)部署到Azure应用服务。在docker日志我得到这个错误:

2020-11-20T10:42:02.911Z INFO  - docker run -d -p 8947:8080 --name xxx_0_37a36398 -e WEBSITES_PORT=8080 -e WEBSITE_SITE_NAME=xxx -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=xxx.azurewebsites.net -e WEBSITE_INSTANCE_ID=xxx appsvc/node:14-lts_20200918.1 yarn start:prod 

2020-11-20T10:42:02.912Z INFO  - Logging is not enabled for this container.
Please use https://aka.ms/linux-diagnostics to enable logging to see container logs here.
2020-11-20T10:42:05.088Z INFO  - Initiating warmup request to container xxx_0_37a36398 for site xxx
2020-11-20T10:42:20.586Z INFO  - Waiting for response to warmup request for container xxx_0_37a36398. Elapsed time = 15.4982001 sec
2020-11-20T10:48:35.794Z INFO  - Waiting for response to warmup request for container xxx_0_37a36398. Elapsed time = 390.7060158 sec
2020-11-20T10:56:21.027Z INFO  - Waiting for response to warmup request for container xxx_0_37a36398. Elapsed time = 855.9388558 sec
2020-11-20T11:04:08.996Z INFO  - Waiting for response to warmup request for container xxx_0_37a36398. Elapsed time = 1323.907606 sec
2020-11-20T11:11:55.596Z INFO  - Waiting for response to warmup request for container xxx_0_37a36398. Elapsed time = 1790.5073044 sec
2020-11-20T11:12:25.625Z ERROR - Container xxx_i_0_37a36398 for site xxx did not start within expected time limit. Elapsed time = 1820.5363685 sec
2020-11-20T11:12:25.627Z ERROR - Container xxx_0_37a36398 didn't respond to HTTP pings on port: 8080, failing site start. See container logs for debugging.
2020-11-20T11:12:25.637Z INFO  - Stopping site xxx because it failed during startup.

应用程序日志显示应用程序启动成功

2020-11-20T10:42:05.150205868Z   _____                               
2020-11-20T10:42:05.150227670Z   /  _  \ __________ _________   ____  
2020-11-20T10:42:05.150232970Z  /  /_\  \___   /  |  \_  __ \_/ __ \ 
2020-11-20T10:42:05.150237271Z /    |    \/    /|  |  /|  | \/\  ___/ 
2020-11-20T10:42:05.150241271Z \____|__  /_____ \____/ |__|    \___  >
2020-11-20T10:42:05.150245371Z         \/      \/                  \/ 
2020-11-20T10:42:05.150249272Z A P P   S E R V I C E   O N   L I N U X
2020-11-20T10:42:05.150252972Z 
2020-11-20T10:42:05.150256472Z Documentation: http://aka.ms/webapp-linux
2020-11-20T10:42:05.150260173Z NodeJS quickstart: https://aka.ms/node-qs
2020-11-20T10:42:05.150263673Z NodeJS Version : v14.7.0
2020-11-20T10:42:05.150267273Z Note: Any data outside '/home' is not persisted
2020-11-20T10:42:05.150270874Z 
2020-11-20T10:42:05.388794060Z Cound not find build manifest file at '/home/site/wwwroot/oryx-manifest.toml'
2020-11-20T10:42:05.389362508Z Could not find operation ID in manifest. Generating an operation id...
2020-11-20T10:42:05.389393011Z Build Operation ID: 5488a73a-f6e1-48d5-9360-7d4e0db141f4
2020-11-20T10:42:06.033354810Z Environment Variables for Application Insight's Codeless Configuration exists..
2020-11-20T10:42:06.603097828Z Writing output script to '/opt/startup/startup.sh'
2020-11-20T10:42:06.946048753Z Running #!/bin/sh
2020-11-20T10:42:06.946644503Z 
2020-11-20T10:42:06.946657204Z # Enter the source directory to make sure the script runs where the user expects
2020-11-20T10:42:06.946662305Z cd "/home/site/wwwroot"
2020-11-20T10:42:06.946666105Z 
2020-11-20T10:42:06.947939813Z export NODE_PATH=/usr/local/lib/node_modules:$NODE_PATH
2020-11-20T10:42:06.947952014Z if [ -z "$PORT" ]; then
2020-11-20T10:42:06.947956114Z      export PORT=8080
2020-11-20T10:42:06.949015304Z fi
2020-11-20T10:42:06.954862399Z 
2020-11-20T10:42:06.954927704Z export NODE_OPTIONS='--require /usr/local/lib/node_modules/applicationinsights/out/Bootstrap/Oryx.js ' $NODE_OPTIONS
2020-11-20T10:42:06.954986409Z PATH="$PATH:/home/site/wwwroot" yarn start:prod
2020-11-20T10:42:08.321443397Z yarn run v1.17.3
2020-11-20T10:42:08.484387733Z $ node dist/src/main 
[...]
2020-11-20T10:42:23.394152218Z Application started on port 8080

我用这行代码绑定express服务器

 const port = Number(process.env.PORT) || 8080;

我已经谷歌了一段时间来寻找解决方案,但没有任何帮助。以下是我现在尝试的步骤。

  • 增加WEBSITES_CONTAINER_START_TIME_LIMIT到1800
  • 设置WEBSITES_PORTPORT设置为80
  • 重新创建和重新部署应用程序

有人知道为什么这个问题仍然存在吗?我的应用程序在右边的端口上列出,在/下返回200 Http状态,并且还实现了400错误处理程序(我已经了解到这个云也是一个问题)。

共有2个答案

段干帅
2023-03-14

来源于https://docs.microsoft.com/azure/app-service/faq-app-service-linux#custom-容器

我的自定义容器监听端口80以外的端口。如何配置应用以将请求路由到该端口?

我们有自动端口检测。您还可以指定一个名为“U端口”的应用程序设置,并为其指定预期端口号的值。以前,平台使用端口应用程序设置。我们计划不推荐此应用程序设置,并专门使用网站\u端口。

您不需要使用端口变量。自动端口检测检测端口(默认为端口80),我们将尝试检测要绑定到容器的端口,但您也可以使用端口应用程序设置,并使用要绑定到容器的端口的值对其进行配置。但是,自定义映像中的web服务器可能使用80以外的端口。您可以通过使用Web\u端口应用程序设置告知Azure您的自定义容器使用的端口。对于使用不同的端口-使用Dockerfile中的EXPOSE指令公开相应的端口(例如5000),并使用Azure上的Web\u port app设置(值为“5000”)公开该端口。

严信瑞
2023-03-14

你会用哨兵吗?我们有一个类似的问题,并能够追溯到哨兵。在没有Sentry和默认配置的情况下尝试。

 类似资料:
  • 我已经创建了一个非常简单的discord机器人,并试图在azure上托管它。当我在本地运行它时,它工作得很好。当我部署它时,它可以正常工作一段时间,然后崩溃并重新启动。 我明白了 我没有设置docker,所以我猜azure是为我做的。 我的包裹是这样的 我的代码是这样的。 有人知道解决办法吗?

  • 我已经构建了一个Web应用程序,该应用程序仅使用。它查看环境变量 以决定要侦听的端口。现在我想用一个Windows应用服务计划将其部署到天主,这在蔚蓝中被称为“Java SE部署”。 在Linux应用程序服务计划中,我可以简单地部署应用程序。jar文件(使用vs-code-plugin、zipdeploy或其他工具),设置环境变量PORT,一切正常。 对于Windows应用程序服务计划,尝试访问该

  • 我正在尝试将服务器部署到azure应用程序服务。服务器代码可以在下面找到。 我从日志流中得到的错误是: 2020-11-18T23:36:06.088Z错误-容器[容器名称]未响应端口8080上的HTTP ping,站点启动失败。有关调试,请参阅容器日志。 我把端口设置为8080,我知道配置正在恢复,因为我可以在日志中看到“服务器监听端口8080”。我已经尝试改变WEBSITES_PORT80和8

  • 我尝试过使用以下启动命令,两个命令都成功地启动了应用程序,正如_default_docker中报告的那样。但应用程序服务正在停止容器,因为端口8080的HTTP ping没有得到响应。 生态系统配置。js文件-在本地运行良好,并在端口8080上成功启动了web应用程序,我已将该文件上载到/应用程序服务中的site/wwwroot/文件夹。 *_默认的码头工人。日志 *_码头工人。日志 我曾尝试在A

  • 我正在部署一个web应用程序,它在Azure应用程序服务上使用NodeJS、Express和React(插入我的BitBucket repo),但我没有发现成功。要么部署失败,要么声称部署成功,但该站点无法访问,并且一直超时。当我在Azure诊断中检查Docker日志时,我注意到以下几点: 在几个读取

  • 尽管我的应用程序在本地运行良好,但我突然开始出现这个错误。 我正在Azure应用程序服务上运行rails应用程序。 我曾尝试将应用程序设置端口设置为80,将我的网站设置端口设置为8080,但没有成功。 puma.rb包括这个 部署到Azure后,我尝试将其更改为8080,但没有成功。 在网上看了之后,我真的很困惑为什么这是突然发生的