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

节点。当容器未响应端口8080上的ping时,Azure应用程序服务上带有pm2的js应用程序失败

姜胤
2023-03-14

我尝试过使用以下启动命令,两个命令都成功地启动了应用程序,正如_default_docker中报告的那样。但应用程序服务正在停止容器,因为端口8080的HTTP ping没有得到响应。

pm2 start ecosystem.config.js 
pm2 start npm -- run serve:ssr 4000

生态系统配置。js文件-在本地运行良好,并在端口8080上成功启动了web应用程序,我已将该文件上载到/应用程序服务中的site/wwwroot/文件夹。

module.exports = {
  apps : [{
    name: 'ssrapp',
    script: './dist/server/',
    instances: 1,
    autorestart: true,
    watch: false,
    max_memory_restart: '2G'
  }]
};

*_默认的码头工人。日志

2019-10-21T12:16:42.286884691Z   _____                               
2019-10-21T12:16:42.287028489Z   /  _  \ __________ _________   ____  
2019-10-21T12:16:42.287036989Z  /  /_\  \___   /  |  \_  __ \_/ __ \ 
2019-10-21T12:16:42.287041089Z /    |    \/    /|  |  /|  | \/\  ___/ 
2019-10-21T12:16:42.287044689Z \____|__  /_____ \____/ |__|    \___  >
2019-10-21T12:16:42.287048489Z         \/      \/                  \/ 
2019-10-21T12:16:42.287052189Z A P P   S E R V I C E   O N   L I N U X
2019-10-21T12:16:42.287055789Z 
2019-10-21T12:16:42.287059089Z Documentation: http://aka.ms/webapp-linux
2019-10-21T12:16:42.287062489Z NodeJS quickstart: https://aka.ms/node-qs
2019-10-21T12:16:42.287066089Z NodeJS Version : v10.16.3
2019-10-21T12:16:42.287069389Z 
2019-10-21T12:16:42.318934970Z /opt/startup/init_container.sh: line 32: [: ==: unary operator expected
2019-10-21T12:16:42.325006910Z Oryx Version : 0.2.20191004.5, Commit: 95ca7f51b147da7b085922507f46106c664ae2a3
2019-10-21T12:16:42.325022210Z 
2019-10-21T12:16:42.325252207Z Cound not find build manifest file at '/home/site/wwwroot/oryx-manifest.toml'
2019-10-21T12:16:42.325267707Z Could not find operation ID in manifest. Generating an operation id...
2019-10-21T12:16:42.325272707Z Build Operation ID: a7a4fff6-536c-41b1-a328-b01a6913948f
2019-10-21T12:16:43.023896728Z Writing output script to '/opt/startup/startup.sh'
2019-10-21T12:16:43.026999997Z Running #!/bin/sh
2019-10-21T12:16:43.027017997Z 
2019-10-21T12:16:43.027023796Z # Enter the source directory to make sure the script runs where the user expects
2019-10-21T12:16:43.027028696Z cd "/home/site/wwwroot"
2019-10-21T12:16:43.027033196Z 
2019-10-21T12:16:43.027037496Z export NODE_PATH=$(npm root --quiet -g):$NODE_PATH
2019-10-21T12:16:43.027041996Z if [ -z "$PORT" ]; then
2019-10-21T12:16:43.027046596Z      export PORT=8080
2019-10-21T12:16:43.027051196Z fi
2019-10-21T12:16:43.027055496Z 
2019-10-21T12:16:43.027059696Z PATH="$PATH:/home/site/wwwroot" pm2 start npm -- run serve:ssr 8080
2019-10-21T12:16:43.988819791Z 
2019-10-21T12:16:43.988873290Z                         -------------
2019-10-21T12:16:43.988899590Z 
2019-10-21T12:16:43.988903390Z __/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
2019-10-21T12:16:43.988925889Z  _\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
2019-10-21T12:16:43.988931389Z   _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
2019-10-21T12:16:43.988936189Z    _\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
2019-10-21T12:16:43.988949489Z     _\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
2019-10-21T12:16:43.988954289Z      _\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
2019-10-21T12:16:43.988976389Z       _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
2019-10-21T12:16:43.988980789Z        _\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
2019-10-21T12:16:43.988985089Z         _\///______________\///______________\///__\///////////////__
2019-10-21T12:16:43.988989589Z 
2019-10-21T12:16:43.988993489Z 
2019-10-21T12:16:43.989001189Z                           Runtime Edition
2019-10-21T12:16:43.989005689Z 
2019-10-21T12:16:43.989009989Z         PM2 is a Production Process Manager for Node.js applications
2019-10-21T12:16:43.989033588Z                      with a built-in Load Balancer.
2019-10-21T12:16:43.989037688Z 
2019-10-21T12:16:43.989062588Z                 Start and Daemonize any application:
2019-10-21T12:16:43.989066588Z                 $ pm2 start app.js
2019-10-21T12:16:43.989070588Z 
2019-10-21T12:16:43.989074388Z                 Load Balance 4 instances of api.js:
2019-10-21T12:16:43.989078288Z                 $ pm2 start api.js -i 4
2019-10-21T12:16:43.989082188Z 
2019-10-21T12:16:43.989085988Z                 Monitor in production:
2019-10-21T12:16:43.989089888Z                 $ pm2 monitor
2019-10-21T12:16:43.989093788Z 
2019-10-21T12:16:43.989097588Z                 Make pm2 auto-boot at server restart:
2019-10-21T12:16:43.989101488Z                 $ pm2 startup
2019-10-21T12:16:43.989105388Z 
2019-10-21T12:16:43.989109388Z                 To go further checkout:
2019-10-21T12:16:43.989113288Z                 http://pm2.io/
2019-10-21T12:16:43.989117188Z 
2019-10-21T12:16:43.989120988Z 
2019-10-21T12:16:43.989124787Z                         -------------
2019-10-21T12:16:43.989128687Z 
2019-10-21T12:16:44.101458966Z [PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
2019-10-21T12:16:44.680135188Z [PM2] PM2 Successfully daemonized
2019-10-21T12:16:44.725026740Z [PM2] Starting /usr/local/bin/npm in fork_mode (1 instance)
2019-10-21T12:16:44.741207478Z [PM2] Done.
2019-10-21T12:16:44.762611464Z ┌──────────┬────┬─────────┬──────┬─────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
2019-10-21T12:16:44.762636964Z │ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem       │ user │ watching │
2019-10-21T12:16:44.762650664Z ├──────────┼────┼─────────┼──────┼─────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
2019-10-21T12:16:44.762656664Z │ npm      │ 0  │ N/A     │ fork │ 82  │ online │ 0       │ 0s     │ 0%  │ 23.4 MB   │ root │ disabled │
2019-10-21T12:16:44.762661564Z └──────────┴────┴─────────┴──────┴─────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
2019-10-21T12:16:44.763132159Z  Use `pm2 show <id|name>` to get more details about an app

*_码头工人。日志

2019-10-21 12:16:42.471 INFO  - Starting container for site
2019-10-21 12:16:42.471 INFO  - docker run -d -p 44692:8081 --name mgssrtest__5706_0_5312eaa2_middleware -e WEBSITE_NODE_DEFAULT_VERSION=6.9.1 -e APPSETTING_WEBSITE_NODE_DEFAULT_VERSION=6.9.1 -e WEBSITE_CORS_ALLOWED_ORIGINS=https://uatservices.micksgarage.com,https://devtestservices.micksgarage.com,https://liveservices.micksgarage.com,https://www.micksgarage.com,https://mgssrlive.micksgarage.com,https://mgssrtest.micksgarage.com -e WEBSITE_CORS_SUPPORT_CREDENTIALS=False -e PORT=8080 -e WEBSITES_PORT=8080 -e WEBSITE_SITE_NAME=mgssrtest -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=mgssrtest-live.azurewebsites.net -e WEBSITE_INSTANCE_ID=3952e083f9a0d4ead164e4cdd951561b6d2f3f64a50759e4377a1dd32b4aa296 -e HTTP_LOGGING_ENABLED=1 appsvc/middleware:1907112318 /Host.ListenUrl=http://0.0.0.0:8081 /Host.DestinationHostUrl=http://172.16.6.2:8080 /Host.UseFileLogging=true 

2019-10-21 12:16:43.116 INFO  - Initiating warmup request to container mgssrtest__5706_0_5312eaa2 for site mgssrtest__5706
2019-10-21 12:16:45.135 ERROR - Container mgssrtest__5706_0_5312eaa2 for site mgssrtest__5706 has exited, failing site start
2019-10-21 12:16:45.135 INFO  - Initiating warmup request to container mgssrtest__5706_0_5312eaa2_middleware for site mgssrtest__5706
2019-10-21 12:16:48.471 INFO  - Container mgssrtest__5706_0_5312eaa2_middleware for site mgssrtest__5706 initialized successfully and is ready to serve requests.
2019-10-21 12:16:48.478 ERROR - Container mgssrtest__5706_0_5312eaa2 didn't respond to HTTP pings on port: 8080, failing site start. See container logs for debugging.

我曾尝试在App Service应用程序设置中设置以下设置(关于这些设置的文档很难找到,并且相互矛盾),但它们似乎没有任何区别:

端口:8080

网址:8080

容器可用性检查模式:仅报告

网站\u容器\u开始\u时间\u限制:1800

注意:节点应用程序启动罚款在应用程序服务与启动命令"npm运行服务:ssr",但我想启动它通过pm2利用监视和重启功能。

看起来应用服务环境正在停止容器,因为它在5秒内没有响应HTTP ping,但是我找不到任何方法来禁用它来确认这是实际问题。

共有2个答案

吕子真
2023-03-14

您的docker run命令未公开端口8080。您只有容器端口44692作为端口8081公开。您可以在日志中看到这一点,如-p 44692:8081

尝试将其添加到docker run命令行:

-p 8080:8080

如果这不起作用,请尝试-p8080:8081,或者干脆-p8080

岳毅
2023-03-14

架构师Jamie在下面的评论中建议解决了这个问题,不需要守护进程参数。非常感谢。

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

  • 如果我的节点应用程序正在使用启动脚本:,则我的应用程序服务Linux实例将崩溃: 容器日志只有上述错误。如果我只使用:应用程序开始就好了。 我知道如果容器没有通过8080响应,容器就会停止,但我有一个设置为我的服务器的端口,因此我无法找出pm2启动脚本使容器崩溃的原因。 我有一种感觉,是未定义的,因为过程中出现了一些混乱,但找不到任何调试方法,因为在容器崩溃后,我无法再使用ssh对其进行检查。 如

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

  • 如果直接从visual studio部署到Azure应用程序服务Linux,Nodejs应用程序可以在本地工作,也可以在应用程序服务上工作,但在使用Azure devops部署时不工作 使用VisualStudio创建工件文件和文件夹- 使用Azure devops的工件文件- 当我尝试使用azure devops应用程序服务部署任务部署时,部署工作正常,但URL不工作,日志错误也不存在- 我没有

  • 我使用Linux web app服务在Azure上创建了一个Nodejs应用程序(ExpressJS)。我通过Kudu成功地部署了代码。在一些代码更改之后,容器没有响应端口上的HTTP ping。我已经添加了网站\u端口8080,端口8080和网站\u容器\u开始\u时间限制:1800但没有运气。下面是api日志流的屏幕截图。你们能帮帮我吗? API日志流截图 节点版本:10.10

  • 我尝试将我的NestJs应用程序(使用快速适配器)部署到Azure应用服务。在docker日志我得到这个错误: 应用程序日志显示应用程序启动成功 我用这行代码绑定express服务器 我已经谷歌了一段时间来寻找解决方案,但没有任何帮助。以下是我现在尝试的步骤。 增加到1800 设置和设置为80 重新创建和重新部署应用程序 有人知道为什么这个问题仍然存在吗?我的应用程序在右边的端口上列出,在下返回2