【Azure 应用服务】本地Node.js部署上云(Azure App Service for Linux)遇到的三个问题解决之道

问题描述

当本地Node.js(Linux + Node.js + npm + yarn)部署上云,选择 Azure App Service for Linux 环境。但是在部署时,遇见了以下三个问题:

问题一:使用VS Code进行部署,部署速度非常的慢,且长时间无法部署成功

问题二:本地项目文件部署到App Service的WWWROOT目录下,但是项目中的node_modules为空,即App Service没有完成自动化部署

问题三:部署成功后,项目无法访问,端口3000没有被App Service监听

问题解答

问题一:使用VS Code进行部署,部署速度非常的慢,且长时间无法部署成功

因为Node.js 应用必须与所有必需的 NPM 依赖项一起部署。但如果项目根目录文件中包含了 yarn.lock 或者是在 package.json 中指定了 yarn 作为Package Manager,则会使用 yarn 来代替 npm。 且默认会使用最新版的 yarn。这会导致在部署时出现未知问题。如卡顿导致长时间无响应。


image.png

解决办法为,删除 yarn.lock 文件。

引用文档:https://github.com/microsoft/Oryx/blob/main/doc/runtimes/nodejs.md#package-manager

Package manager

The version of npm used to install dependencies and run npm scripts is the one bundled with the specified Node.js version as listed here.

If a yarn.lock file is found in your repo root or if you specify "yarn" in the engines field of package.json, the latest or specified version of yarn will be used instead of npm.

Note that installing packages globally is unsupported, whether requested directly by your app or by some pre/post install script of an included package. For example, this will not work in your package.json:

  "preinstall" : "npm install -g somepackage"
}

问题二:本地项目文件部署到App Service的WWWROOT目录下,但是项目中的node_modules为空,即App Service没有完成自动化部署

因为项目文件已经部署到 wwwroot目录下,但是 **node_modules **为空,表示部署时没有完成 npm install 自动编译的命令。所以经过查看关于App Service对部署是否自动build的资料发现,当对App Service进行部署的时候,App Service Kudu会自动执行编译命令。其主要是通过 **SCM_DO_BUILD_DURING_DEPLOYMENT** 参数进行控制。

当 **SCM_DO_BUILD_DURING_DEPLOYMENT **设置为 true 时,Kudu会自动编译项目文件,如运行 npm install 或 dotnet build / dotnet pulish

当 **SCM_DO_BUILD_DURING_DEPLOYMENT **设置为false时,则不会。当使用ZIP 包部署时,就不会触发自动编译。因为Kudu认为ZIP中的文件已经是可执行文件,不在需要编译。

Reference : https://github.com/projectkudu/kudu/wiki/Configurable-settings#enabledisable-build-actions

解决办法为,**在App Service的Configuration中添加 SCM_DO_BUILD_DURING_DEPLOYMENT 参数,并配置值为 true。或者是在项目跟目录中添加 .deployment 文件。并在其中加入 **

[config]
SCM_DO_BUILD_DURING_DEPLOYMENT=true 

如图:


image.png

问题三:部署成功后,项目无法访问,端口3000没有被App Service监听

Node.js 应用需要侦听正确的端口才能接收传入的请求

当部署完成,但无法通过浏览器访问App Service 。这时候,就可以直接登录Kudu 查看 docker 日志。在日志中看见 app service默认监听的端口为8080。


image.png

而 Node.js 项目中,使用的确是3000,所以需要通过配置App Service的 Application Setting来解决这个问题。

解决办法为:通过App Service门户,添加 PORT 或者 WEBSITES_PORT 应用配置参数值为3000.

Reference:

https://docs.azure.cn/zh-cn/app-service/configure-custom-container?pivots=container-linux#configure-port-number

https://docs.azure.cn/zh-cn/app-service/configure-language-nodejs?pivots=platform-linux#get-port-number

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

分类: 【Azure 应用服务】

标签: App Service, App Service for Linux, Node.js + yarn.lock +npm, SCM_DO_BUILD_DURING_DEPLOYMENT, PORT +WEBSITE_PORT

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容