Node.js 将Express App部署到Azure App Services';t响应端口8080上的HTTP ping

Node.js 将Express App部署到Azure App Services';t响应端口8080上的HTTP ping,node.js,azure,azure-web-app-service,nestjs,azure-appservice,Node.js,Azure,Azure Web App Service,Nestjs,Azure Appservice,我尝试将我的NestJs应用程序(使用express适配器)部署到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_I

我尝试将我的NestJs应用程序(使用express适配器)部署到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\u CONTAINER\u START\u TIME\u LIMIT
    增加到1800
  • 网站\u端口
    端口
    设置为80
  • 重新创建并重新部署应用程序
有人知道为什么这个问题仍然存在吗?我的应用程序在右侧端口上列出,并在
/
下返回200 Http状态,并且还实现了400错误处理程序(我已经了解到此云也是一个问题)。

来源于

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

我们有自动端口检测。您还可以指定应用程序设置 调用您的端口,并为其指定所需端口的值 号码。以前,平台使用端口应用程序设置。我们是 计划弃用此应用程序设置并使用网站\u端口 完全是

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


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

当您说“将端口和端口设置设置为80”时,是否将代码更新为
const-PORT=process.env.PORT | 80
?确保应用程序正在侦听端口环境变量process.env.port.提供的端口。还要确保Dockerfile中的EXPOSE指令与端口匹配。您好,谢谢您的回答。我确信应用程序正在环境变量
port
指定的端口上运行。你查docker档案是什么意思?我正在使用Azure应用程序服务的NodeJs运行时。所以我的项目中没有Dockerfile。或者我应该吗?所以你没有使用自定义容器。所以忽略dockerfile部分。当你说“还实现了一个400错误处理程序”时,两者都是400还是404。400错误将被处理以及404Hi,谢谢你的回答。如问题中所述,我已经尝试设置WEBSITE\u PORT环境变量。您的评论中的“WEBSITE\u PORT”是打字错误吗?它应该是
WEBSITES\u PORT
。另外,当你说环境变量时,我希望你已经设置了应用程序服务的应用程序内设置,对吗?是的,它是在azure portalHi@Markus的应用程序设置中设置的。你解决了这个问题吗?几天来我一直被困在这里,我看不出有什么问题。它只说“等待对预热请求的响应”,直到超时,没有其他内容,没有更多的错误消息,我已经设置了端口、网站和端口,我在dockerfile上使用了EXPOSE,删除了项目并重新开始,我快疯了