You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure部署Node.js应用失败:容器未响应预热请求

解决Azure部署Node.js应用时的预热请求响应失败问题

问题根源分析

从日志和代码来看,你的应用已经成功启动并监听8080端口,但Azure的健康探测请求没有得到正常响应,主要有两个潜在原因:

  • Express中间件写法错误:app.use(express.static(...), () => console.log("serving app")) 不符合Express中间件规范,第二个参数被当作错误处理函数,可能导致静态文件服务逻辑异常,影响根路径的响应。
  • 服务器监听地址限制:默认app.listen(port)绑定localhost,容器内部的localhost无法被Azure探测服务访问,需绑定0.0.0.0允许外部访问。

修复代码

修改服务端代码,解决上述问题:

console.log("STARTING CUSTOM CALLIGRAPHY SERVER");

const express = require("express");
const path = require("path");

const app = express();

// 修正日志逻辑的放置方式,确保中间件正常执行
app.use((req, res, next) => {
  console.log("serving app");
  next();
});
app.use(express.static(path.join(__dirname, "frontend", "build")));

app.use(express.json({ limit: "5gb" }));
// 注意Azure环境变量为大写PORT,绑定0.0.0.0允许外部访问
const port = process.env.PORT || 8080;

const version = "beta1.1";
app.listen(port, '0.0.0.0', () => console.log(`CCv${version} Listening on port ${port}!`));

调整Azure应用服务的探测设置

如果代码修复后仍有问题,可通过以下方式调整健康探测:

方法1:设置自定义健康检查路径

  • 登录Azure门户,进入目标应用服务
  • 左侧菜单选择「配置」>「常规设置」
  • 在「健康检查」区域,设置「路径」为应用能正常响应的地址(比如/)
  • 调整「超时」为30秒、「间隔」为10秒,延长探测等待时间
  • 保存配置后重新部署应用

方法2:延长启动超时时间

  • 进入应用服务的「配置」>「应用程序设置」
  • 添加新设置:
    • 名称:WEBSITES_CONTAINER_START_TIME_LIMIT
    • 值:300(将启动超时延长至5分钟)

内容的提问来源于stack exchange,提问作者Hammaad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:55:44